[Vm-dev] VM Maker: VMMaker.oscog-eem.399.mcz
commits at source.squeak.org
commits at source.squeak.org
Sat Sep 21 01:32:09 UTC 2013
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.399.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.399
Author: eem
Time: 20 September 2013, 6:28:56.308 pm
UUID: 89f8fefe-b59d-42d7-9c11-7f848d0e5131
Ancestors: VMMaker.oscog-eem.398
A few isIntegerObject:'s => isImmediate:'s in primitives.
More protocol.
The Spur VM now draws its first window!!
=============== Diff against VMMaker.oscog-eem.398 ===============
Item was changed:
----- Method: BalloonEngineBase>>loadWorkBufferFrom: (in category 'loading state') -----
loadWorkBufferFrom: wbOop
"Load the working buffer from the given oop"
<inline: false>
+ (interpreterProxy isImmediate: wbOop) ifTrue:[^GEFWorkBufferIsInteger].
- (interpreterProxy isIntegerObject: wbOop) ifTrue:[^GEFWorkBufferIsInteger].
(interpreterProxy isWords: wbOop) ifFalse:[^GEFWorkBufferIsPointers].
(interpreterProxy slotSizeOf: wbOop) < GWMinimalSize ifTrue:[^GEFWorkBufferTooSmall].
self workBufferPut: wbOop.
self magicNumberGet = GWMagicNumber ifFalse:[^GEFWorkBufferBadMagic].
"Sanity checks"
(self wbSizeGet = (interpreterProxy slotSizeOf: wbOop)) ifFalse:[^GEFWorkBufferWrongSize].
self objStartGet = GWHeaderSize ifFalse:[^GEFWorkBufferStartWrong].
"Load buffers"
objBuffer := workBuffer + self objStartGet.
getBuffer := objBuffer + self objUsedGet.
aetBuffer := getBuffer + self getUsedGet.
"Make sure we don't exceed the work buffer"
GWHeaderSize + self objUsedGet + self getUsedGet + self aetUsedGet
> self wbSizeGet ifTrue:[^GEFWorkTooBig].
^0!
Item was changed:
----- Method: BalloonEngineBase>>quickLoadEngineFrom: (in category 'loading state') -----
quickLoadEngineFrom: engineOop
"Load the minimal required state from the engineOop, e.g., just the work buffer.
Answer 0 on success or non-zero a failure code on failure"
<inline: false>
| failCode |
interpreterProxy failed ifTrue:[^GEFAlreadyFailed].
+ (interpreterProxy isImmediate: engineOop) ifTrue:[^GEFEngineIsInteger].
- (interpreterProxy isIntegerObject: engineOop) ifTrue:[^GEFEngineIsInteger].
(interpreterProxy isPointers: engineOop) ifFalse:[^GEFEngineIsWords].
(interpreterProxy slotSizeOf: engineOop) < BEBalloonEngineSize ifTrue:[^GEFEngineTooSmall].
engine := engineOop.
(failCode := self loadWorkBufferFrom: (interpreterProxy
fetchPointer: BEWorkBufferIndex
ofObject: engineOop)) = 0
ifFalse: [^failCode].
self stopReasonPut: 0.
objUsed := self objUsedGet.
engineStopped := false.
^0!
Item was changed:
----- Method: FilePlugin>>primitiveFileSetPosition (in category 'file primitives') -----
primitiveFileSetPosition
| newPosition file sz |
<var: 'file' type: 'SQFile *'>
<var: 'newPosition' type: 'squeakFileOffsetType'>
<export: true>
+ (interpreterProxy isImmediate: (interpreterProxy stackValue: 0)) ifFalse:
- (interpreterProxy isIntegerObject: (interpreterProxy stackValue: 0)) ifFalse:
[sz := self cCode: 'sizeof(squeakFileOffsetType)'.
(interpreterProxy byteSizeOf: (interpreterProxy stackValue: 0)) > sz
ifTrue: [^interpreterProxy primitiveFail]].
newPosition := interpreterProxy positive64BitValueOf: (interpreterProxy stackValue: 0).
file := self fileValueOf: (interpreterProxy stackValue: 1).
interpreterProxy failed ifFalse:[
self sqFile: file SetPosition: newPosition ].
interpreterProxy failed ifFalse:[
interpreterProxy pop: 2 "pop position, file; leave rcvr on stack" ].!
Item was added:
+ ----- Method: Spur32BitMMLESimulator>>positive32BitIntegerFor: (in category 'simulation only') -----
+ positive32BitIntegerFor: integerValue
+ "hack around the CoInterpreter/ObjectMemory split refactoring"
+ ^coInterpreter positive32BitIntegerFor: integerValue!
Item was added:
+ ----- Method: Spur32BitMMLESimulator>>positive32BitValueOf: (in category 'simulation only') -----
+ positive32BitValueOf: oop
+ "hack around the CoInterpreter/ObjectMemory split refactoring"
+ ^coInterpreter positive32BitValueOf: oop!
Item was added:
+ ----- Method: Spur32BitMMLESimulator>>positive64BitIntegerFor: (in category 'simulation only') -----
+ positive64BitIntegerFor: integerValue
+ "hack around the CoInterpreter/ObjectMemory split refactoring"
+ ^coInterpreter positive64BitIntegerFor: integerValue!
Item was added:
+ ----- Method: Spur32BitMMLESimulator>>positive64BitValueOf: (in category 'simulation only') -----
+ positive64BitValueOf: oop
+ "hack around the CoInterpreter/ObjectMemory split refactoring"
+ ^coInterpreter positive64BitValueOf: oop!
Item was added:
+ ----- Method: Spur32BitMMLESimulator>>primitiveFailureCode (in category 'simulation only') -----
+ primitiveFailureCode
+ "hack around the CoInterpreter/ObjectMemory split refactoring"
+ ^coInterpreter primitiveFailureCode!
Item was added:
+ ----- Method: Spur32BitMMLESimulator>>push: (in category 'simulation only') -----
+ push: oop
+ "hack around the CoInterpreter/ObjectMemory split refactoring"
+ ^coInterpreter push: oop!
Item was added:
+ ----- Method: Spur32BitMMLESimulator>>pushInteger: (in category 'simulation only') -----
+ pushInteger: integerValue
+ "hack around the CoInterpreter/ObjectMemory split refactoring"
+ ^coInterpreter pushInteger: integerValue!
Item was added:
+ ----- Method: Spur32BitMMLESimulator>>stackIntegerValue: (in category 'simulation only') -----
+ stackIntegerValue: offset
+ "hack around the CoInterpreter/ObjectMemory split refactoring"
+ ^coInterpreter stackIntegerValue: offset!
Item was added:
+ ----- Method: Spur32BitMMLESimulator>>stackObjectValue: (in category 'simulation only') -----
+ stackObjectValue: offset
+ "hack around the CoInterpreter/ObjectMemory split refactoring"
+ ^coInterpreter stackObjectValue: offset!
Item was added:
+ ----- Method: Spur32BitMMLESimulator>>stringOf: (in category 'simulation only') -----
+ stringOf: oop
+ "hack around the CoInterpreter/ObjectMemory split refactoring"
+ ^coInterpreter stringOf: oop!
Item was added:
+ ----- Method: SpurMemoryManager>>classBitmap (in category 'plugin support') -----
+ classBitmap
+ ^self splObj: ClassBitmap!
Item was changed:
+ ----- Method: SpurMemoryManager>>classByteArray (in category 'plugin support') -----
- ----- Method: SpurMemoryManager>>classByteArray (in category 'interpreter access') -----
classByteArray
"a.k.a. self fetchPointer: ClassByteArrayCompactIndex ofObject: classTableFirstPage"
^self splObj: ClassByteArray!
Item was added:
+ ----- Method: SpurMemoryManager>>classPoint (in category 'plugin support') -----
+ classPoint
+ ^self splObj: ClassPoint!
Item was changed:
----- Method: SpurMemoryManager>>isIntegerObject: (in category 'object testing') -----
isIntegerObject: oop
"This list records the valid senders of isIntegerObject: as we replace uses of
isIntegerObject: by isImmediate: where appropriate."
| sel |
sel := thisContext sender method selector.
(#( DoIt
DoItIn:
on:do: "from the debugger"
makeBaseFrameFor:
quickFetchInteger:ofObject:
frameOfMarriedContext:
objCouldBeClassObj:
isMarriedOrWidowedContext:
shortPrint:
bytecodePrimAt
bytecodePrimAtPut
commonAt:
commonAtPut:
loadFloatOrIntFrom:
positive32BitValueOf:
primitiveExternalCall
checkedIntegerValueOf:
bytecodePrimAtPut
commonAtPut:
primitiveVMParameter
checkIsStillMarriedContext:currentFP:
displayBitsOf:Left:Top:Right:Bottom:
fetchStackPointerOf:
primitiveContextAt
primitiveContextAtPut
subscript:with:storing:format:
printContext:
compare31or32Bits:equal:
signed64BitValueOf:
primDigitMultiply:negative:
digitLength:
isNegativeIntegerValueOf:
magnitude64BitValueOf:
primitiveMakePoint
primitiveAsCharacter
primitiveInputSemaphore
baseFrameReturn
primitiveExternalCall
primDigitCompare:
isLiveContext:
numPointerSlotsOf:
fileValueOf:
loadBitBltDestForm
fetchIntOrFloat:ofObject:ifNil:
fetchIntOrFloat:ofObject:
+ loadBitBltSourceForm
+ loadPoint:from:
+ primDigitAdd:
+ primDigitSubtract:
+ positive64BitValueOf:) includes: sel) ifFalse:
- loadBitBltSourceForm) includes: sel) ifFalse:
[self halt].
^(oop bitAnd: 1) ~= 0!
More information about the Vm-dev
mailing list