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
+1 -4
View File
@@ -6,6 +6,7 @@ class Foo {
_d = d
_e = e
}
write {
IO.write(_a)
IO.write(_b)
@@ -23,7 +24,3 @@ foo.write
// expect: 3
// expect: 4
// expect: 5
// TODO: Trying to get or set a field outside of a class.
// TODO: Fields in nested classes.
// TODO: Closing over fields.