Eliot Miranda uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-eem.636.mcz
==================== Summary ====================
Name: Collections-eem.636
Author: eem
Time: 29 May 2015, 4:03:27.101 pm
UUID: 0ccecc27-ca23-41aa-be79-584dbc53e4d0
Ancestors: Collections-mt.635
findLast:startingAt: dual for findFirst:startingAt:
=============== Diff against Collections-mt.635 ===============
Item was added:
+ ----- Method: SequenceableCollection>>findLast:startingAt: (in category 'enumerating') -----
+ findLast: aBlock startingAt: i
+ "Return the index of my last element with index >= i for which aBlock evaluates as true."
+
+ | index |
+ index := self size + 1.
+ [(index := index - 1) >= i] whileTrue:
+ [(aBlock value: (self at: index)) ifTrue: [^index]].
+ ^ 0!
Eliot Miranda uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-eem.300.mcz
==================== Summary ====================
Name: Compiler-eem.300
Author: eem
Time: 29 May 2015, 3:31:40.184 pm
UUID: 538f90f4-71d3-4f00-ac34-348700471a82
Ancestors: Compiler-eem.299
Use the size/emitPushNClosureTemps: api in
block generation.
=============== Diff against Compiler-eem.299 ===============
Item was changed:
----- Method: BlockNode>>emitCodeForEvaluatedClosureValue:encoder: (in category 'code generation (closures)') -----
emitCodeForEvaluatedClosureValue: stack encoder: encoder
| position |
position := stack position.
stack position: arguments size + copiedValues size.
+ encoder genPushNClosureTemps: temporaries size.
- temporaries size timesRepeat:
- [NodeNil emitCodeForValue: stack encoder: encoder].
self
reindexingLocalsDo: [self emitCodeForEvaluatedValue: stack encoder: encoder]
encoder: encoder.
self returns ifFalse:
[encoder genReturnTopToCaller.
pc := encoder methodStreamPosition].
stack position: position!
Item was changed:
----- Method: BlockNode>>sizeCodeForEvaluatedClosureValue: (in category 'code generation (closures)') -----
sizeCodeForEvaluatedClosureValue: encoder
"The closure value primitives push the arguments and the copied values.
The compiler guarantees that any copied values come before all local temps.
So on closure activation we only need to push nils for the remaining temporaries."
+ ^(encoder sizePushNClosureTemps: temporaries size)
- ^temporaries size * (NodeNil sizeCodeForValue: encoder)
+ (self
reindexingLocalsDo: [self sizeCodeForEvaluatedValue: encoder]
encoder: nil "don't store temps yet")
+ (self returns ifTrue: [0] ifFalse: [encoder sizeReturnTopToCaller])!
Eliot Miranda uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-eem.299.mcz
==================== Summary ====================
Name: Compiler-eem.299
Author: eem
Time: 29 May 2015, 3:25:41.119 pm
UUID: 04451481-d898-4b03-bc51-9e28546cfb82
Ancestors: Compiler-eem.298
Provide support for a specialized pushNClosureTemps:
bytecode, as included in the Sista bytecode set.
=============== Diff against Compiler-eem.298 ===============
Item was added:
+ ----- Method: BytecodeEncoder>>sizePushNClosureTemps: (in category 'opcode sizing') -----
+ sizePushNClosureTemps: numTemps
+ ^self sizeOpcodeSelector: #genPushNClosureTemps: withArguments: {numTemps}!
Item was added:
+ ----- Method: EncoderForV3PlusClosures>>genPushNClosureTemps: (in category 'bytecode generation') -----
+ genPushNClosureTemps: numTemps
+ numTemps timesRepeat: [self genPushSpecialLiteral: nil]!
Chris Muller uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-cmm.984.mcz
==================== Summary ====================
Name: Morphic-cmm.984
Author: cmm
Time: 19 May 2015, 2:56:17.688 pm
UUID: e1b37491-efb5-4415-bf9f-6f44b577daa0
Ancestors: Morphic-mt.983
Fix the ability to let Morph users set up their own EventHandler to have proper filtering of MouseMoveEvents.
=============== Diff against Morphic-mt.983 ===============
Item was changed:
----- Method: Morph>>handlesMouseMove: (in category 'event handling') -----
handlesMouseMove: anEvent
"Do I want to receive mouseMove: when the hand passes over the receiver? Rules say that by default a morph gets #mouseMove iff
* the hand is not dragging anything,
+ and some button is down,
+ and the receiver is the current mouse focus."
+ self eventHandler ifNotNil: [^ self eventHandler handlesMouseMove: anEvent].
anEvent hand hasSubmorphs ifTrue: [ ^ false ].
(anEvent anyButtonPressed and: [ anEvent hand mouseFocus == self ]) ifFalse: [ ^ false ].
^ true!
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!
Eliot Miranda uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-eem.298.mcz
==================== Summary ====================
Name: Compiler-eem.298
Author: eem
Time: 29 May 2015, 11:59:13.77 am
UUID: b06cc000-4a40-45cd-a0b2-a2d1c0309e39
Ancestors: Compiler-cmm.297
Provide multiple-bytecode-sets aware support for markerOrNil
=============== Diff against Compiler-cmm.297 ===============
Item was added:
+ ----- Method: BytecodeEncoder class>>markerOrNilFor: (in category 'compiled method support') -----
+ markerOrNilFor: aMethod
+ "If aMethod is a marker method, answer the symbol used to mark it. Otherwise
+ 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.
+
+ Marker methods compile to two bytecode forms, this:
+ self
+ send: <literal 1>
+ pop
+ returnSelf
+ or this:
+ self
+ send: <literal 1>
+ returnTop"
+ ^self subclassResponsibility!
Item was added:
+ ----- Method: EncoderForV3 class>>markerOrNilFor: (in category 'compiled method support') -----
+ markerOrNilFor: aMethod
+ "If aMethod is a marker method, answer the symbol used to mark it. Otherwise
+ 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.
+
+ Marker methods compile to two bytecode forms, this:
+ self
+ send: <literal 1>
+ pop
+ returnSelf
+ or this:
+ self
+ send: <literal 1>
+ returnTop"
+ | e |
+ ^(((e := aMethod endPC) = 19 or: [e = 20])
+ and: [aMethod numLiterals = 3
+ and: [(aMethod at: 17) = 16r70 "push self"
+ and: [(aMethod at: 18) = 16rD0]]]) "send <literal 1>"
+ ifTrue: [aMethod literalAt: 1]!
Can you elaborate on that "typing blind" use case? My eyes are always opened
when I type. ;-) I just don't look at the keyboard but the screen while
typing. Not sure what you mean here.
Best,
Marcel
--
View this message in context: http://forum.world.st/The-Trunk-Morphic-cmm-977-mcz-tp4825591p4825620.html
Sent from the Squeak - Dev mailing list archive at Nabble.com.