feat: add optimized field load/store instructions for direct method access

Introduce CODE_LOAD_FIELD_THIS and CODE_STORE_FIELD_THIS opcodes that bypass receiver stack operations when field access occurs directly within a method body. Refactor field() compiler to emit these faster instructions when compiler->methodName is set, and extract loadThis() helper to correctly resolve 'this' in nested functions. Update VM interpreter with dedicated dispatch cases that read receiver from frame->stackStart instead of popping, and add debug disassembly support. Add test cases for field closure capture and nested class field isolation, removing related TODO comments.
This commit is contained in:
Bob Nystrom
2013-12-23 19:17:40 +00:00
parent a7e29fc967
commit 64fdc1876a
7 changed files with 128 additions and 23 deletions
+18
View File
@@ -0,0 +1,18 @@
class Outer {
method {
_field = "outer"
IO.write(_field) // expect: outer
class Inner {
method {
_field = "inner"
IO.write(_field) // expect: inner
}
}
(new Inner).method
IO.write(_field) // expect: outer
}
}
(new Outer).method