From e4a3c2e434755f3d60919ffa49b072f990cfdfd6 Mon Sep 17 00:00:00 2001 From: hogoww Date: Fri, 25 Feb 2022 09:41:46 +0100 Subject: [PATCH] Mutant #456, Reverting [ Replace #ifTrue: with #ifFalse: ] on method [ popObjStack: ] 14/14 test case are EQUIVALENT --- .../VMMaker/SpurMemoryManager.class.st | 73 +++++++------------ 1 file changed, 28 insertions(+), 45 deletions(-) diff --git a/smalltalksrc/VMMaker/SpurMemoryManager.class.st b/smalltalksrc/VMMaker/SpurMemoryManager.class.st index 9f86ec10f2..134b6d0857 100644 --- a/smalltalksrc/VMMaker/SpurMemoryManager.class.st +++ b/smalltalksrc/VMMaker/SpurMemoryManager.class.st @@ -9670,55 +9670,38 @@ SpurMemoryManager >> pop: nItems thenPush: oop [ { #category : #'obj stacks' } SpurMemoryManager >> popObjStack: objStack [ - | topx top nextPage myx | - self eassert: [ self isValidObjStack: objStack ]. + self eassert: [self isValidObjStack: objStack]. topx := self fetchPointer: ObjStackTopx ofObject: objStack. - topx = 0 ifTrue: [ - self assert: - (self fetchPointer: ObjStackNextx ofObject: objStack) = 0. - self - cCode: [ "for debugging markAndTrace: set (MarkStackRecord := OrderedCollection new)" - ] - inSmalltalk: [ - (self fetchPointer: ObjStackMyx ofObject: objStack) - = MarkStackRootIndex ifTrue: [ - MarkStackRecord ifNotNil: [ - MarkStackRecord addLast: { #EMPTY. nil } ] ] ]. - ^ nil ]. + topx = 0 ifTrue: + [self assert: (self fetchPointer: ObjStackNextx ofObject: objStack) = 0. + self cCode: [] "for debugging markAndTrace: set (MarkStackRecord := OrderedCollection new)" + inSmalltalk: + [(self fetchPointer: ObjStackMyx ofObject: objStack) = MarkStackRootIndex ifTrue: + [MarkStackRecord ifNotNil: + [MarkStackRecord addLast: {#EMPTY. nil}]]]. + ^nil]. topx := topx - 1. - top := self - fetchPointer: topx + ObjStackFixedSlots - ofObject: objStack. - self - cCode: [ "for debugging markAndTrace: set (MarkStackRecord := OrderedCollection new)" - ] - inSmalltalk: [ - (self fetchPointer: ObjStackMyx ofObject: objStack) - = MarkStackRootIndex ifFalse: [ - MarkStackRecord ifNotNil: [ - (MarkStackRecord last first = #push and: [ - MarkStackRecord last last = top ]) - ifTrue: [ MarkStackRecord removeLast ] - ifFalse: [ - MarkStackRecord addLast: { - #pop. - top } ] ] ] ]. + top := self fetchPointer: topx + ObjStackFixedSlots ofObject: objStack. + self cCode: [] "for debugging markAndTrace: set (MarkStackRecord := OrderedCollection new)" + inSmalltalk: + [(self fetchPointer: ObjStackMyx ofObject: objStack) = MarkStackRootIndex ifTrue: + [MarkStackRecord ifNotNil: + [(MarkStackRecord last first = #push and: [MarkStackRecord last last = top]) + ifTrue: [MarkStackRecord removeLast] + ifFalse: [MarkStackRecord addLast: {#pop. top}]]]]. self storePointer: ObjStackTopx ofObjStack: objStack withValue: topx. - (topx = 0 and: [ - (nextPage := self fetchPointer: ObjStackNextx ofObject: objStack) - ~= 0 ]) - ifTrue: [ - self - storePointer: ObjStackFreex - ofObjStack: nextPage - withValue: objStack. - self storePointer: ObjStackNextx ofObjStack: objStack withValue: 0. - myx := self fetchPointer: ObjStackMyx ofObject: objStack. - self updateRootOfObjStackAt: myx with: nextPage. - self eassert: [ self isValidObjStack: nextPage ] ] - ifFalse: [ self eassert: [ self isValidObjStack: objStack ] ]. - ^ top + (topx = 0 + and: [(nextPage := self fetchPointer: ObjStackNextx ofObject: objStack) ~= 0]) + ifTrue: + [self storePointer: ObjStackFreex ofObjStack: nextPage withValue: objStack. + self storePointer: ObjStackNextx ofObjStack: objStack withValue: 0. + myx := self fetchPointer: ObjStackMyx ofObject: objStack. + self updateRootOfObjStackAt: myx with: nextPage. + self eassert: [self isValidObjStack: nextPage]] + ifFalse: + [self eassert: [self isValidObjStack: objStack]]. + ^top ] { #category : #'interpreter access' }