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

commits at source.squeak.org commits at source.squeak.org
Tue Nov 27 01:09:56 UTC 2012


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

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

Name: VMMaker.oscog-eem.223
Author: eem
Time: 26 November 2012, 5:07:25.123 pm
UUID: 62151b21-ad34-403a-b5a0-63d83c023cdd
Ancestors: VMMaker.oscog-eem.222

Make sure primitiveIndexOfMethod:header: is inlined as was the
older primitiveIndexOfMethodHeader:.
Add more info to logging and remove ceCheckForInterrupts's false
dependency on interpreter vars.

=============== Diff against VMMaker.oscog-eem.222 ===============

Item was changed:
  ----- Method: CoInterpreter>>ceCheckForInterrupts (in category 'trampolines') -----
  ceCheckForInterrupts
  	<api>
  	| switched |
+ 	self cCode: [] inSmalltalk:
- 	self cCode: '' inSmalltalk:
  		[self maybeCheckStackDepth: 0 sp: stackPointer pc: instructionPointer].
  	switched := self checkForEventsMayContextSwitch: true.
  	self returnToExecutive: false postContextSwitch: switched!

Item was changed:
  ----- Method: StackInterpreter>>primitiveIndexOfMethod:header: (in category 'compiled methods') -----
  primitiveIndexOfMethod: theMethod header: methodHeader
  	"Note: With the Squeak V0 format we now have 10 bits of primitive index, but they are in
  	 two places for temporary backward compatibility.  The time to unpack is negligible,
  	 since the derived primitive function pointer is stored in the method cache.  With the new
  	 format we assume a 3-byte CallPrimitive with a little-endian 16-bit primitive index."
  	<api>
+ 	<inline: true>
  	^self cppIf: MULTIPLEBYTECODESETS
  		ifTrue:
  			[(self headerIndicatesAlternateBytecodeSet: methodHeader)
  				ifTrue:
  					[(self alternateHeaderHasPrimitiveFlag: methodHeader)
  						ifTrue:
  							[| firstBytecode |
  							 firstBytecode := self firstBytecodeOfAlternateHeader: methodHeader method: theMethod.
  							 (objectMemory byteAt: firstBytecode + 1) + ((objectMemory byteAt: firstBytecode + 2) << 8)]
  						ifFalse:
  							[0]]
  				ifFalse:
  					[| primBits |
  					 primBits := methodHeader >> 1.
  					 (primBits bitAnd: 16r1FF) + (primBits >> 19 bitAnd: 16r200)]]
  		ifFalse:
  			[| primBits |
  			primBits := methodHeader >> 1.
  			(primBits bitAnd: 16r1FF) + (primBits >> 19 bitAnd: 16r200)]!

Item was changed:
  ----- Method: VMMaker>>generateEntire (in category 'generate sources') -----
  generateEntire
  	"Generate the interp, internal plugins and exports as well as the external plugins.
  	 If this comes from a generator, log it for convenience."
  	(thisContext findContextSuchThat: [:ctxt| ctxt selector == #generateConfiguration]) ifNotNil:
  		[:root|
  		(thisContext findContextSuchThat: [:ctxt| ctxt sender == root]) ifNotNil:
  			[:generator|
+ 			logger nextPutAll: (generator selector copyReplaceAll: 'generate' with: '').
+ 			interpreterClassName ifNotNil: [logger space; nextPutAll: interpreterClassName].
+ 			logger cr; flush]].
- 			logger
- 				nextPutAll: (generator selector copyReplaceAll: 'generate' with: '');
- 				cr;
- 				flush]].
  	self generateMainVM.
  	self generateExternalPlugins!



More information about the Vm-dev mailing list