Invalid intruction ordering bug fixed.
--- a/IRBuilderTest.st Tue Apr 28 15:03:39 2009 +0000
+++ b/IRBuilderTest.st Mon May 11 20:20:05 2009 +0000
@@ -797,7 +797,7 @@
"Created: / 30-03-2009 / 23:03:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
-testBlock_exteptionHandler
+testBlock_exceptionHandler
|aCompiledMethod irBuilder|
irBuilder := (IRBuilder new)
@@ -830,11 +830,10 @@
self assert:(aCompiledMethod isKindOf:CompiledMethod).
self assert:((aCompiledMethod valueWithReceiver:1 arguments:#()) = true).
- "Modified: / 01-04-2009 / 19:43:52 / Jan Vrany <vranyj1@fel.cvut.cz>"
- "Created: / 28-04-2009 / 13:10:13 / karpij1 <karpij1@fel.cvut.cz>"
+ "Created: / 11-05-2009 / 21:53:19 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
-testBlock_exteptionHandler_noRemoteReturn
+testBlock_exceptionHandler_noRemoteReturn
|aCompiledMethod irBuilder|
irBuilder := (IRBuilder new)
@@ -866,8 +865,37 @@
self assert:(aCompiledMethod isKindOf:CompiledMethod).
self assert:((aCompiledMethod valueWithReceiver:1 arguments:#()) = true).
- "Modified: / 01-04-2009 / 19:43:52 / Jan Vrany <vranyj1@fel.cvut.cz>"
- "Created: / 28-04-2009 / 13:39:01 / karpij1 <karpij1@fel.cvut.cz>"
+ "Created: / 11-05-2009 / 21:53:25 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+testBlock_invalid_instruction_ordering_bug_1
+ |aCompiledMethod irBuilder|
+
+ irBuilder := (IRBuilder new)
+ numRargs: 1;
+ addTemps: #(self i);
+ pushTemp: #i;
+ pushLiteral: 3;
+ pushReceiver;
+
+ pushBlockUsingBuilder: [ :builder |
+ builder
+ numRargs: 0;
+ addTemps: #();
+ pushTemp: #i;
+ returnTop.
+ ];
+ returnTop;
+ ir.
+ "
+ irBuilder ir
+ "
+
+ aCompiledMethod := irBuilder compiledCode.
+ self assert:(aCompiledMethod isKindOf:CompiledMethod).
+ self assert:((aCompiledMethod valueWithReceiver:1 arguments:#()) isKindOf: Block).
+
+ "Created: / 11-05-2009 / 21:55:30 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
testBlock_methodTempVar
--- a/IRTranslator.st Tue Apr 28 15:03:39 2009 +0000
+++ b/IRTranslator.st Mon May 11 20:20:05 2009 +0000
@@ -106,6 +106,7 @@
pushBlock: irClosure
+ self doPending.
gen makeBlock: irClosure
"
@@ -116,7 +117,7 @@
self addPending: (Message selector: #pushLiteral: argument: block)
"
- "Modified: / 30-03-2009 / 18:15:29 / Jan Vrany <vranyj1@fel.cvut.cz>"
+ "Modified: / 11-05-2009 / 22:13:39 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
pushDup