VM Maker: VMMaker.oscog-eem.963.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

VM Maker: VMMaker.oscog-eem.963.mcz

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

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

Name: VMMaker.oscog-eem.963
Author: eem
Time: 4 December 2014, 12:00:39.246 pm
UUID: 9df56221-18fd-4dcd-b93f-ae000bef62e5
Ancestors: VMMaker.oscog-eem.962

Fix SmartSyntaxPlugin code generation for Spur of

- asOop: old code assumed 4 byte oops & headers
- Unsigned old code assumed 32-bit oops

Fix Float class>>ccgCanConvertFrom: to use isFloat

Avoid duplication of effort in special selector send
forwarding fault handling.

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

Item was changed:
  ----- Method: Float class>>ccgCanConvertFrom: (in category '*VMMaker-plugin generation') -----
  ccgCanConvertFrom: anObject
 
+ ^anObject isFloat!
- ^anObject class == self!

Item was changed:
  ----- Method: SmartSyntaxPluginCodeGenerator>>ccgLoad:expr:asUnsignedValueFrom: (in category 'coercing') -----
  ccgLoad: aBlock expr: aString asUnsignedValueFrom: anInteger
  "Answer a codestring for positive integer coercion (with validating side-effect) of oop, as described in comment to ccgLoad:expr:asRawOopFrom:"
 
+ ^aBlock value: (String streamContents: [:aStream |
+ aStream
+ nextPutAll: '(interpreterProxy bytesPerOop = 4';
+ crtab: 2;
+ nextPutAll: 'ifTrue: [interpreterProxy positive32BitValueOf:';
+ crtab: 4;
+ nextPutAll: '(interpreterProxy stackValue:';
+ print: anInteger;
+ nextPutAll: ')]';
+ crtab: 2;
+ nextPutAll: 'ifFalse: [interpreterProxy positive64BitValueOf:';
+ crtab: 4;
+ nextPutAll: '(interpreterProxy stackValue:';
+ print: anInteger;
+ nextPutAll: ')])'])!
- ^aBlock value: (String streamContents: [:aStream | aStream
- nextPutAll: 'interpreterProxy positive32BitValueOf:';
- crtab: 2;
- nextPutAll: '(interpreterProxy stackValue:';
- nextPutAll: anInteger asString;
- nextPutAll: ')'])!

Item was changed:
  ----- Method: SmartSyntaxPluginCodeGenerator>>generateCoerceToObjectFromPtr:on: (in category 'asOop:/asValue:') -----
  generateCoerceToObjectFromPtr: aNode on: aStream
  "This code assumes no named instance variables"
 
+ aStream nextPutAll: '((sqInt)(('.
- aStream nextPutAll: '((int) '.
  self emitCExpression: aNode on: aStream.
+ aStream nextPutAll: ') - BaseHeaderSize))'!
- aStream nextPutAll: ') - 4'!

Item was changed:
  ----- Method: StackInterpreter>>handleSpecialSelectorSendFaultFor:fp:sp: (in category 'message sending') -----
  handleSpecialSelectorSendFaultFor: obj fp: theFP sp: theSP
  "Handle a special send fault that may be due to a special selector
+ send accessing a forwarded object.  obj is forwarded.
+ Unforward stack contents and and inst vars and answer obj's target."
- send accessing a forwarded object.
- Unforward the object on the stack and in inst vars and answer its target."
  <inline: false>
  <var: #theFP type: #'char *'>
  <var: #theSP type: #'char *'>
+ | rcvr |
  self assert: (objectMemory isOopForwarded: obj).
-
  self followForwardedFrameContents: theFP stackPointer: theSP.
+ rcvr := self frameReceiver: theFP.
+ (objectMemory isPointers: rcvr) ifTrue:
- (objectMemory isPointers: (self frameReceiver: theFP)) ifTrue:
  [objectMemory
+ followForwardedObjectFields: rcvr
- followForwardedObjectFields: (self frameReceiver: theFP)
  toDepth: 0].
  ^objectMemory followForwarded: obj!