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

commits at source.squeak.org commits at source.squeak.org
Sat Jun 16 22:48:57 UTC 2018

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

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

Name: Kernel-eem.1179
Author: eem
Time: 16 June 2018, 3:48:39.465427 pm
UUID: 6fef2fe4-bb58-4546-a532-eb7da951cc4c
Ancestors: Kernel-eem.1178

Fix copying of methods containing full blocks.  After creating the copy, full blocks need to update their outerCode to the copy, otherwise they are left pointing at the original.

Symptom: debugging a doit with full blocks, as soon as one steps into a block temp names disappear because the original gets copied with temp names, but any contained block method doesn't update to refer to the copy holding temp names, remaining referring to the original that has no temp names.

=============== Diff against Kernel-eem.1178 ===============

Item was added:
+ ----- Method: CompiledBlock>>postCopy (in category 'copying') -----
+ postCopy
+ 	1 to: self numLiterals - 1 do:
+ 		[:index| | lit |
+ 		 (lit := self literalAt: index) isCompiledCode ifTrue:
+ 			[lit outerCode: self; postCopy]]!

Item was changed:
  ----- Method: CompiledMethod>>postCopy (in category 'copying') -----
  	| penultimateLiteral |
  	(penultimateLiteral := self penultimateLiteral) isMethodProperties ifTrue:
+ 		[self penultimateLiteral: penultimateLiteral copy].
+ 	self encoderClass supportsFullBlocks ifTrue:
+ 		[1 to: self numLiterals do:
+ 			[:index| | lit |
+ 			 (lit := self literalAt: index) isCompiledCode ifTrue:
+ 				[lit outerCode: self; postCopy]]]!
- 		[self penultimateLiteral: penultimateLiteral copy]!

More information about the Squeak-dev mailing list