--- 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