--- a/IRDecompiler.st Wed Nov 05 18:58:44 2008 +0000
+++ b/IRDecompiler.st Mon Dec 01 19:01:08 2008 +0000
@@ -220,43 +220,47 @@
self goto: #return.
!
-send: selector
+send: selector numArgs: numArgs
+
+ | args rcvr |
+ selector = #caseError ifTrue:[^self stackPush: (RBPseudoSendNode new selector: selector)].
+ args := OrderedCollection new.
+ [ selector numArgs timesRepeat: [args addFirst: self Value].
+ rcvr := self Value.
+ ] on: Abort do: [
+ [self stackPush: (RBPseudoSendNode new selector: selector).
+ ^self cascade] on: Abort do:[^false]
+ ].
- | args rcvr |
- selector = #caseError ifTrue:[^self stackPush: (RBPseudoSendNode new selector: selector)].
- args := OrderedCollection new.
- [ selector numArgs timesRepeat: [args addFirst: self Value].
- rcvr := self Value.
- ] on: Abort do: [
- [self stackPush: (RBPseudoSendNode new selector: selector).
- ^self cascade] on: Abort do:[^false]
- ].
+ Preferences compileBlocksAsClosures
+ ifTrue: [ (rcvr isLiteral and: [selector = #createBlock:]) ifTrue: [
+ ^ self block: rcvr value env: args first]]
+ ifFalse: [ (selector = #blockCopy:) ifTrue: [
+ ^ self stackPush: (RBPseudoSendNode new selector: selector; arguments: args)]].
- Preferences compileBlocksAsClosures
- ifTrue: [ (rcvr isLiteral and: [selector = #createBlock:]) ifTrue: [
- ^ self block: rcvr value env: args first]]
- ifFalse: [ (selector = #blockCopy:) ifTrue: [
- ^ self stackPush: (RBPseudoSendNode new selector: selector; arguments: args)]].
+ self stackPush: (self simplify: (RBMessageNode new
+ receiver: rcvr
+ selectorParts: (self newSelectorParts: selector)
+ arguments: args)).
- self stackPush: (self simplify: (RBMessageNode new
- receiver: rcvr
- selectorParts: (self newSelectorParts: selector)
- arguments: args)).
+ "Created: / 01-12-2008 / 19:40:52 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
-send: selector toSuperOf: behavior
+send: selector numArgs: numArgs toSuperOf: behavior
+
+ | args rcvr |
+ args := OrderedCollection new.
+ selector numArgs timesRepeat: [args addFirst: self Value].
+ rcvr := self Value.
+ (rcvr isVariable and: [rcvr name = 'self']) ifFalse: [self patternError].
- | args rcvr |
- args _ OrderedCollection new.
- selector numArgs timesRepeat: [args addFirst: self Value].
- rcvr _ self Value.
- (rcvr isVariable and: [rcvr name = 'self']) ifFalse: [self patternError].
+ rcvr identifierToken: (SqueakToken value: 'super' start: 0).
+ self stackPush: (RBMessageNode new
+ receiver: rcvr
+ selectorParts: (self newSelectorParts: selector)
+ arguments: args).
- rcvr identifierToken: (SqueakToken value: 'super' start: 0).
- self stackPush: (RBMessageNode new
- receiver: rcvr
- selectorParts: (self newSelectorParts: selector)
- arguments: args).
+ "Created: / 01-12-2008 / 19:45:52 / Jan Vrany <vranyj1@fel.cvut.cz>"
!
storeIntoLiteralVariable: association