diff --git a/bytecode_migration_plan.md b/bytecode_migration_plan.md index c0f348d..4b83f0f 100644 --- a/bytecode_migration_plan.md +++ b/bytecode_migration_plan.md @@ -119,7 +119,7 @@ Goal: migrate the compiler so all values live in frames/bytecode, keeping JVM te - [x] Replace `emitStatementCall` usage for `EnumDeclStatement`. - [x] Replace `emitStatementCall` usage for `ClassDeclStatement`. - [x] Replace `emitStatementCall` usage for `FunctionDeclStatement`. - - [ ] Add JVM disasm coverage to ensure module init has no `CALL_SLOT` to `Callable@...` for declarations. + - [x] Add JVM disasm coverage to ensure module init has no `CALL_SLOT` to `Callable@...` for declarations. - [ ] Step 26: Bytecode-backed lambdas (remove `ValueFnRef` runtime execution). - [ ] Compile lambda bodies to bytecode and emit an opcode to create a callable from bytecode + capture plan. - [ ] Remove `containsValueFnRef`/`forceScopeSlots` workaround once lambdas are bytecode. diff --git a/lynglib/src/commonTest/kotlin/BytecodeRecentOpsTest.kt b/lynglib/src/commonTest/kotlin/BytecodeRecentOpsTest.kt index 612c888..e302f5a 100644 --- a/lynglib/src/commonTest/kotlin/BytecodeRecentOpsTest.kt +++ b/lynglib/src/commonTest/kotlin/BytecodeRecentOpsTest.kt @@ -260,6 +260,7 @@ class BytecodeRecentOpsTest { assertNotNull(moduleFn, "module bytecode missing") val disasm = CmdDisassembler.disassemble(moduleFn) assertTrue(!disasm.contains("CALL_SLOT"), disasm) + assertTrue(!disasm.contains("Callable@"), disasm) assertTrue(disasm.contains("DECL_CLASS"), disasm) assertTrue(disasm.contains("DECL_FUNCTION"), disasm) assertTrue(disasm.contains("DECL_ENUM"), disasm)