Extended PatternPipelineContext and CarrierUpdateInfo for Pattern 3 AST-based generalization. Changes: 1. PatternPipelineContext: - Added loop_condition: Option<ASTNode> - Added loop_body: Option<Vec<ASTNode>> - Added loop_update_summary: Option<LoopUpdateSummary> - Updated build_pattern_context() for Pattern 3 2. CarrierUpdateInfo: - Added then_expr: Option<ASTNode> - Added else_expr: Option<ASTNode> - Updated analyze_loop_updates() with None defaults Status: Phase 213-2 Steps 2-2 & 2-3 complete Next: Create Pattern3IfAnalyzer to extract if statement and populate update summary
42 lines
1.1 KiB
Bash
42 lines
1.1 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR=$(cd "$(dirname "$0")/.." && pwd)
|
|
cd "$ROOT_DIR"
|
|
|
|
APP=${1:-apps/tests/mir-branch-ret/main.hako}
|
|
OUT=${2:-tmp/app_aot}
|
|
OBJ_DIR=${OBJ_DIR:-target/aot_objects}
|
|
OBJ_BASENAME=$(basename "$APP" .hako)
|
|
OBJ_PATH="$OBJ_DIR/$OBJ_BASENAME.o"
|
|
|
|
echo "[1/5] build hakorune (cranelift-jit)"
|
|
cargo build --release --features cranelift-jit
|
|
|
|
echo "[2/5] build nyrt (static lib)"
|
|
cargo build -p nyrt --release
|
|
|
|
echo "[3/5] emit object (.o) via jit-direct"
|
|
mkdir -p "$OBJ_DIR"
|
|
BIN=${NYASH_BIN:-./target/release/hakorune}
|
|
env -u NYASH_OPT_DIAG_FORBID_LEGACY NYASH_SKIP_TOML_ENV=1 NYASH_PLUGIN_ONLY=1 NYASH_AOT_OBJECT_OUT="$OBJ_DIR" "$BIN" --jit-direct "$APP"
|
|
|
|
if [[ ! -f "$OBJ_PATH" ]]; then
|
|
echo "❌ object not found: $OBJ_PATH" >&2
|
|
echo "Contents of $OBJ_DIR:" >&2
|
|
ls -la "$OBJ_DIR" >&2 || true
|
|
exit 1
|
|
fi
|
|
ls -l "$OBJ_PATH"
|
|
|
|
# Ensure output directory exists
|
|
mkdir -p "$(dirname "$OUT")"
|
|
echo "[4/5] link with nyrt -> $OUT"
|
|
cc "$OBJ_PATH" \
|
|
-L crates/nyrt/target/release \
|
|
-Wl,--whole-archive -lnyrt -Wl,--no-whole-archive \
|
|
-lpthread -ldl -lm -o "$OUT"
|
|
|
|
echo "[5/5] run $OUT"
|
|
./"$OUT"
|