compiler/PPCPluggableNode.st
changeset 421 7e08b31e0dae
parent 416 b0fd54ee0412
child 422 116d2b2af905
equal deleted inserted replaced
420:b2f2f15cef26 421:7e08b31e0dae
    33     "Sadly, on Smalltalk/X blocks cannot be inlined because
    33     "Sadly, on Smalltalk/X blocks cannot be inlined because
    34      the VM does not provide enough information to map
    34      the VM does not provide enough information to map
    35      it back to source code. Very bad indeed!!"
    35      it back to source code. Very bad indeed!!"
    36 
    36 
    37     ((Smalltalk respondsTo:#isSmalltalkX) and:[ Smalltalk isSmalltalkX ]) ifTrue:[
    37     ((Smalltalk respondsTo:#isSmalltalkX) and:[ Smalltalk isSmalltalkX ]) ifTrue:[
    38         ^ super asInlined
    38 		^ super asInlined
    39     ] ifFalse:[
    39     ] ifFalse:[
    40         ^ PPCInlinePluggableNode new
    40 		^ PPCInlinePluggableNode new
    41                 name: name;
    41 			name: name;
    42                 block: block;
    42 			block: block;
    43                 yourself
    43 			yourself
    44     ]
    44     ]
    45 
    45 
    46     "Modified: / 06-11-2014 / 01:46:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
    47 !
    46 !
    48 
    47 
    49 compileWith: compiler effect: effect id: id
    48 compileWith: compiler effect: effect id: id
    50 	| blockId |
    49 	| blockId |
    51 	blockId := compiler idFor: block prefixed: #block.
    50 	blockId := compiler idFor: block prefixed: #block.
    66 
    65 
    67 prefix
    66 prefix
    68 	^ #plug
    67 	^ #plug
    69 ! !
    68 ! !
    70 
    69 
       
    70 !PPCPluggableNode methodsFor:'comparing'!
       
    71 
       
    72 = anotherNode
       
    73 	super = anotherNode ifFalse: [ ^ false ].
       
    74 	^ block = anotherNode block.
       
    75 !
       
    76 
       
    77 hash
       
    78 	^ super hash bitXor: block hash
       
    79 ! !
       
    80