[squeak-dev] The Trunk: Kernel-eem.1022.mcz

commits at source.squeak.org commits at source.squeak.org
Fri May 13 19:42:57 UTC 2016

Eliot Miranda uploaded a new version of Kernel to project The Trunk:

==================== 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') -----
  	"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"

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!

More information about the Squeak-dev mailing list