IRBytecodeGenerator.st
changeset 17 df6f26442169
parent 13 c7503f2d7d36
child 18 e6921b3a5d5b
--- a/IRBytecodeGenerator.st	Mon May 11 20:20:05 2009 +0000
+++ b/IRBytecodeGenerator.st	Tue May 12 11:10:22 2009 +0000
@@ -190,7 +190,7 @@
 
     self 
         nextPut: #makeBlock;
-        nextPut: nil "Number of block bytecodes. Patched later";
+        nextPut: nil "Index of block bytecode end. Patched later";
         nextPut: irClosure numVars;
         nextPut: irClosure numArgs.
 
@@ -199,13 +199,23 @@
     closureCode := translator
                         interpret: irClosure;
                         getCode.
+
+    "Patch makeBlock offsets"
+    closureCode withIndexDo:
+        [:instr :index|
+        instr == #makeBlock ifTrue:
+            [closureCode 
+                at: index + 1 
+                put: (closureCode at: index + 1) + pos + 4]].
+
+
     code addAll: closureCode.
 
     "Patch number of closure bytecodes"
     code at: pos + 2 put: code size + 1.
 
     "Created: / 30-03-2009 / 18:16:10 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 01-04-2009 / 19:43:22 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 12-05-2009 / 08:58:11 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
 popTop