Skip to content

Commit

Permalink
Adding primitive to see if an object is in permSpace
Browse files Browse the repository at this point in the history
  • Loading branch information
tesonep committed Feb 2, 2023
1 parent 9de7bfb commit 2484e2b
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 2 deletions.
4 changes: 2 additions & 2 deletions smalltalksrc/VMMaker/StackInterpreter.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -1116,9 +1116,9 @@ StackInterpreter class >> initializePrimitiveTable [
"Perm Space primitives"
(90 primitiveMoveToPermSpace)
(91 primitiveMoveToPermSpaceInBulk)
(92 primitiveIsInPermSpace)

"Input/Output Primitives (92-109)"
(92 primitiveFail)
"Input/Output Primitives (93-109)"
(93 primitiveFail)
(94 primitiveFail)
(95 primitiveFail)
Expand Down
9 changes: 9 additions & 0 deletions smalltalksrc/VMMaker/StackInterpreterPrimitives.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -1746,6 +1746,15 @@ StackInterpreterPrimitives >> primitiveInstVarAtPut [
self pop: argumentCount + 1 thenPush: newValue
]

{ #category : #'perm - space' }
StackInterpreterPrimitives >> primitiveIsInPermSpace [

| rcvr |

rcvr := self stackTop.
self pop: argumentCount + 1 thenPushBool: (objectMemory isPermanent: rcvr).
]

{ #category : #'ffi - memory accessor primitives' }
StackInterpreterPrimitives >> primitiveLoadBoolean8FromBytes [
<var: #bytes type: #'char*' >
Expand Down
44 changes: 44 additions & 0 deletions smalltalksrc/VMMakerTests/VMPermanentSpacePrimitiveTest.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,50 @@ VMPermanentSpacePrimitiveTest >> setUp [
self createWeakArrayClass.
]

{ #category : #tests }
VMPermanentSpacePrimitiveTest >> testIsInmmediateInPermSpace [

interpreter push: (memory integerObjectOf: 42).
interpreter argumentCount: 0.
interpreter primitiveIsInPermSpace.

self assert: interpreter stackTop equals: memory falseObject
]

{ #category : #tests }
VMPermanentSpacePrimitiveTest >> testIsNewObjectInPermSpace [

interpreter push: (self newZeroSizedObject).
interpreter argumentCount: 0.
interpreter primitiveIsInPermSpace.

self assert: interpreter stackTop equals: memory falseObject
]

{ #category : #tests }
VMPermanentSpacePrimitiveTest >> testIsOldObjectInPermSpace [

interpreter push: (self newOldSpaceObjectWithSlots: 0).
interpreter argumentCount: 0.
interpreter primitiveIsInPermSpace.

self assert: interpreter stackTop equals: memory falseObject
]

{ #category : #tests }
VMPermanentSpacePrimitiveTest >> testIsPermObjectInPermSpace [

| oldObj permObject |
oldObj := self newOldSpaceObjectWithSlots: 0.
permObject := memory moveToPermSpace: oldObj.

interpreter push: permObject.
interpreter argumentCount: 0.
interpreter primitiveIsInPermSpace.

self assert: interpreter stackTop equals: memory trueObject
]

{ #category : #tests }
VMPermanentSpacePrimitiveTest >> testMoveToPermSpaceFailsOnEphemeron [

Expand Down

0 comments on commit 2484e2b

Please sign in to comment.