The Trunk: Kernel-eem.926.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Kernel-eem.926.mcz

commits-2
Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.926.mcz

==================== Summary ====================

Name: Kernel-eem.926
Author: eem
Time: 29 May 2015, 12:02:32.361 pm
UUID: b5d090c6-115c-427d-92ca-0e02afa2908d
Ancestors: Kernel-cmm.925

Make markerOrNil multiple-bytecode-sets aware

=============== Diff against Kernel-cmm.925 ===============

Item was changed:
  ----- Method: CompiledMethod>>markerOrNil (in category 'private') -----
  markerOrNil
  "If I am a marker method, answer the symbol used to mark me.  Otherwise
+ answer nil. What is a marker method?  It is method with body like
- answer nil.
-
- What is a marker method?  It is method with body like
  'self subclassResponsibility' or '^ self subclassResponsibility'
+ used to indicate ('mark') a special property."
- used to indicate ('mark') a special property.
 
+ ^self encoderClass markerOrNilFor: self!
- Marker methods compile to bytecode like:
-
- 9 <70> self
- 10 <D0> send: <literal 1>
- 11 <87> pop
- 12 <78> returnSelf
-
- for the first form, or
-
- 9 <70> self
- 10 <D0> send: <literal 1>
- 11 <7C> returnTop
-
- for the second form."
-
- | e |
- ((e := self endPC) = 19 or: [e = 20]) ifFalse: [^ nil].
- (self numLiterals = 3) ifFalse:[^ nil].
- (self at: 17) =  16r70 ifFalse:[^ nil]. "push self"
- (self at: 18) = 16rD0 ifFalse:[^ nil]. "send <literal 1>"
- "If we reach this point, we have a marker method that sends self <literal 1>"
- ^ self literalAt: 1
- !

Item was added:
+ ----- Method: InstructionPrinter>>callPrimitive: (in category 'instruction decoding') -----
+ callPrimitive: index
+ "Print the callPrimitive bytecode."
+
+ self print: 'callPrimitive: ' , index printString!