The Trunk: Kernel-eem.1022.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.1022.mcz

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

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

Name: Kernel-eem.1022
Author: eem
Time: 13 May 2016, 12:42:06.679822 pm
UUID: a39b0f45-dcca-4780-aec1-1466aaadd607
Ancestors: Kernel-bf.1021

Revise the fix in Kernel-bf.1019 (Debugger: step over temp vector initializer when entering method).  Use the new bytecode scanning mahcinery from Compiler-eem.322 to implement willReallyStore and use it in stepToSendOrReturn to filter-out stores of indirect temp vectors.

=============== Diff against Kernel-bf.1021 ===============

Item was changed:
  ----- Method: ContextPart>>stepToSendOrReturn (in category 'system simulation') -----
  stepToSendOrReturn
  "Simulate the execution of bytecodes until either sending a message or
  returning a value to the receiver (that is, until switching contexts)."
 
  | ctxt |
+ [self willReallySend or: [self willReturn or: [self willReallyStore]]] whileFalse:
- [self willReallySend or: [self willReturn or: [self willStore]]] whileFalse:
  [ctxt := self step.
  ctxt == self ifFalse:
  [self halt.
  "Caused by mustBeBoolean handling"
  ^ctxt]]!

Item was added:
+ ----- Method: InstructionStream>>willReallyStore (in category 'testing') -----
+ willReallyStore
+ "Answer whether the bytecode at pc is a store or store-pop into an explicit variable.
+ This eliminates stores into indirect temp vectors, which implement mutable closed-over
+ variables in the the closure implementation, and hence stores into temp vectors are not real stores."
+ | method |
+ method := self method.
+ ^method encoderClass isNonSyntheticStoreAt: pc in: method for: self!

Item was removed:
- ----- Method: MethodContext>>stepToSendOrReturn (in category 'system simulation') -----
- stepToSendOrReturn
- ((method at: pc) == 16r8A "push new array" and: [pc = method initialPC]) ifTrue: [
- (method at: pc+2) = 16r68 ifFalse: [self error: 'assumed pop into temp0 bytecode'].
- "init temp vector first"
- self step; step].
- ^super stepToSendOrReturn!