[Vm-dev] VM Maker: VMMaker.oscog-eem.1829.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Apr 21 19:01:52 UTC 2016


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1829.mcz

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

Name: VMMaker.oscog-eem.1829
Author: eem
Time: 21 April 2016, 12:00:00.793947 pm
UUID: 7f3fe80a-c466-4d76-801f-0941dc2e0747
Ancestors: VMMaker.oscog-cb.1828

Cogit: Fix PushCq in X64 for fully 64-bit quick constants (typically immediate floats).

=============== Diff against VMMaker.oscog-cb.1828 ===============

Item was changed:
  ----- Method: CogX64Compiler>>computeMaximumSize (in category 'generate machine code') -----
(excessive size, no diff calculated)

Item was added:
+ ----- Method: CogX64Compiler>>computeSizeOfPushCw (in category 'generate machine code') -----
+ computeSizeOfPushCw
+ 	^(self inCurrentCompilation: (operands at: 0))
+ 		ifTrue: [9]
+ 		ifFalse: [self pushCwByteSize]!

Item was changed:
  ----- Method: CogX64Compiler>>concretizePushCq (in category 'generate machine code') -----
  concretizePushCq
  	<inline: true>
  	| value |
  	value := operands at: 0.
  	(self isQuick: value) ifTrue:
  		[machineCode
  			at: 0 put: 16r6A;
  			at: 1 put: (value bitAnd: 16rFF).
  		^machineCodeSize := 2].
+ 	(self isSignExtendedFourByteValue: value) ifTrue:
+ 		[machineCode
+ 			at: 0 put: 16r68;
+ 			at: 1 put: (value bitAnd: 16rFF);
+ 			at: 2 put: (value >> 8 bitAnd: 16rFF);
+ 			at: 3 put: (value >> 16 bitAnd: 16rFF);
+ 			at: 4 put: (value >> 24 bitAnd: 16rFF).
+ 		^machineCodeSize := 5].
+ 	^self concretizePushCw!
- 	self assert: (self isSignExtendedFourByteValue: value).
- 	machineCode
- 		at: 0 put: 16r68;
- 		at: 1 put: (value bitAnd: 16rFF);
- 		at: 2 put: (value >> 8 bitAnd: 16rFF);
- 		at: 3 put: (value >> 16 bitAnd: 16rFF);
- 		at: 4 put: (value >> 24 bitAnd: 16rFF).
- 	^machineCodeSize := 5!



More information about the Vm-dev mailing list