@@ -4926,9 +4926,9 @@ StackInterpreter >> divorceFrame: theFP andContext: ctxt [
4926
4926
- pop the instruction pointer
4927
4927
- pop the suspension reason too
4928
4928
- push the instruction pointer back"
4929
- savedIP := self popStack .
4930
- self popStack .
4931
- self push : savedIP ].
4929
+ savedIP := self popFromStackPage: thePage .
4930
+ self popFromStackPage: thePage .
4931
+ self pushValue : savedIP toStackPage: thePage ].
4932
4932
self updateStateOfSpouseContextForFrame: theFP WithSP: theSP.
4933
4933
4934
4934
callerCtx := self ensureCallerContext: theFP.
@@ -10590,6 +10590,20 @@ StackInterpreter >> popFloat [
10590
10590
^objectMemory floatValueOf: self popStack
10591
10591
]
10592
10592
10593
+ { #category : 'internal interpreter access' }
10594
+ StackInterpreter >> popFromStackPage: aPage [
10595
+ "In the StackInterpreter stacks grow down."
10596
+ <api>
10597
+ | top |
10598
+ <inline: true>
10599
+
10600
+ aPage == stackPage ifTrue: [ ^ self popStack ].
10601
+
10602
+ top := stackPages unsignedLongAt: aPage headSP.
10603
+ aPage headSP: aPage headSP + objectMemory wordSize.
10604
+ ^top
10605
+ ]
10606
+
10593
10607
{ #category : 'internal interpreter access' }
10594
10608
StackInterpreter >> popPos32BitInteger [
10595
10609
"May set successFlag, and return false if not valid"
@@ -12988,6 +13002,19 @@ StackInterpreter >> pushTemporaryVariableBytecode [
12988
13002
self fetchNextBytecode]
12989
13003
]
12990
13004
13005
+ { #category : 'internal interpreter access' }
13006
+ StackInterpreter >> pushValue: aValue toStackPage: aPage [
13007
+ "In the StackInterpreter stacks grow down."
13008
+ <api>
13009
+ <inline: true>
13010
+ <var: #sp type: #'char *'>
13011
+ | sp |
13012
+ aPage == stackPage ifTrue: [ ^ self push: aValue ].
13013
+
13014
+ stackPages unsignedLongAt: (sp := aPage headSP - objectMemory wordSize) put: aValue.
13015
+ aPage headSP: sp
13016
+ ]
13017
+
12991
13018
{ #category : 'frame access' }
12992
13019
StackInterpreter >> pushedReceiverOrClosureOfFrame: theFP [
12993
13020
"The receiver of a message send or the closure of a block activation is
0 commit comments