347 headers said "Licensed under the StarForth License, Version 1.0" -- a shortening (Captain Bob, 2026-11-08: "License file SL I think I shortened accidently"); LICENSE is, and has been since the first commit, the Starship License 1.0 (SL-1.0, SPDX LicenseRef-Starship-1.0). 349 files, 566 occurrences, now "Starship License, Version 1.0 (SL-1.0)". Left as they are, pending a ruling: docs/patent/ (the patent figures), docs/formal/ (the citable volumes) and the generated reports under docs/working/experiments/ (32 files). Comments and license text only: the amd64 kernel builds, every changed script parses. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GE3SDvQn5EoxdGufk84zz2
78 lines
3.0 KiB
Bash
Executable File
78 lines
3.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
#
|
||
# StarForth — Steady-State Virtual Machine Runtime
|
||
#
|
||
# Copyright (c) 2023–2025 Robert A. James
|
||
# All rights reserved.
|
||
#
|
||
# This file is part of the StarForth project.
|
||
#
|
||
# Licensed under the Starship License, Version 1.0 (SL-1.0) (the "License");
|
||
# you may not use this file except in compliance with the License.
|
||
#
|
||
# You may obtain a copy of the License at:
|
||
# https://github.com/star.4th@proton.me/StarForth/LICENSE.txt
|
||
#
|
||
# This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||
# express or implied, including but not limited to the warranties of
|
||
# merchantability, fitness for a particular purpose, and noninfringement.
|
||
#
|
||
# See the License for the specific language governing permissions and
|
||
# limitations under the License.
|
||
#
|
||
# StarForth — Steady-State Virtual Machine Runtime
|
||
# Copyright (c) 2023–2025 Robert A. James
|
||
# All rights reserved.
|
||
#
|
||
# This file is part of the StarForth project.
|
||
#
|
||
# Licensed under the Starship License, Version 1.0 (SL-1.0) (the "License");
|
||
# you may not use this file except in compliance with the License.
|
||
#
|
||
# You may obtain a copy of the License at:
|
||
# https://github.com/star.4th@proton.me/StarForth/LICENSE.txt
|
||
#
|
||
# This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||
# express or implied, including but not limited to the warranties of
|
||
# merchantability, fitness for a particular purpose, and noninfringement.
|
||
#
|
||
# See the License for the specific language governing permissions and
|
||
# limitations under the License.
|
||
#
|
||
#
|
||
|
||
# profile_control.sh - Target Control Words performance bottleneck
|
||
|
||
set -euo pipefail
|
||
|
||
EXE="./build/starforth"
|
||
echo "[CLEAN]"; make clean
|
||
echo "[BUILD for control words profiling]"
|
||
make -f v3/Makefile CFLAGS="-std=c99 -O3 -g -fno-omit-frame-pointer -DSTARFORTH_PERFORMANCE -DNDEBUG -march=native -Wall -Werror -Iv3/include -Ikernel/include -Iv3/src/word_source -Iv3/src/test_runner/include -DSTRICT_PTR=1" LDFLAGS=""
|
||
|
||
[[ -x "$EXE" ]] || { echo "ERROR: $EXE missing/not executable"; exit 2; }
|
||
|
||
echo "[RECORD] Control Words perf profile..."
|
||
rm -f perf.data CONTROL_REPORT.txt
|
||
|
||
# Create a minimal FORTH program that hammers control flow
|
||
cat > control_test.forth << 'EOF'
|
||
: HAMMER_IF 1000 0 DO I 2 MOD IF 42 ELSE 24 THEN DROP LOOP ;
|
||
: HAMMER_LOOPS 100 0 DO 10 0 DO I J + DROP LOOP LOOP ;
|
||
: HAMMER_NESTED 50 0 DO I 3 MOD DUP IF DUP 2 = IF 99 ELSE 88 THEN ELSE 77 THEN DROP LOOP ;
|
||
|
||
HAMMER_IF HAMMER_IF HAMMER_IF HAMMER_IF HAMMER_IF
|
||
HAMMER_LOOPS HAMMER_LOOPS HAMMER_LOOPS
|
||
HAMMER_NESTED HAMMER_NESTED HAMMER_NESTED HAMMER_NESTED
|
||
EOF
|
||
|
||
echo "Running targeted control flow benchmark..."
|
||
# Use --log-none and timeout to avoid cleanup segfault
|
||
timeout 10s perf record -F 999 -g --call-graph dwarf -e cycles:u -- "$EXE" --log-none < control_test.forth 2>/dev/null || true
|
||
|
||
echo "[REPORT → CONTROL_REPORT.txt]"
|
||
perf report --stdio --no-children --percent-limit 1.0 --sort overhead,symbol,dso > CONTROL_REPORT.txt
|
||
echo "DONE → CONTROL_REPORT.txt"; head -50 CONTROL_REPORT.txt || true
|
||
|
||
rm -f control_test.forth
|