Hi, I want to change #primitiveBitOr or #primitiveBitAnd and in both cases, I compile the VM, I run an image, and the image cannot even start and CPU 100% :(<br>I have a loop somewhere.<br><br>This is the current implementation of #primitiveBitOr for example:<br>
<br>primitiveBitOr<br> | integerReceiver integerArgument |<br> integerArgument := self popPos32BitInteger.<br> integerReceiver := self popPos32BitInteger.<br> successFlag<br> ifTrue: [self push: (self positive32BitIntegerFor:<br>
(integerReceiver bitOr: integerArgument))]<br> ifFalse: [self unPop: 2]<br><br><br>I NEED to have the receiver oop and the argument oop. So, I've change it to:<br><br>primitiveBitOr<br> | integerReceiver integerArgument arg rcvr |<br>
arg := self popStack.<br> integerArgument := self positive32BitValueOf: arg.<br> rcvr := self popStack.<br> integerReceiver := self positive32BitValueOf: rcvr.<br> <br> successFlag<br> ifTrue: [<br>
self push: (self positive32BitIntegerFor:<br> (integerReceiver bitOr: integerArgument))]<br> ifFalse: [self unPop: 2]<br><br><br>And then to:<br><br>primitiveBitOr<br> | integerReceiver integerArgument arg rcvr |<br>
arg := self stackValue: 0.<br> integerArgument := self positive32BitValueOf: arg.<br> rcvr := self stackValue: 1.<br> integerReceiver := self positive32BitValueOf: rcvr.<br><br> successFlag<br> ifTrue: [<br>
self push: (self positive32BitIntegerFor:<br> (integerReceiver bitOr: integerArgument))]<br> ifFalse: [self unPop: 2]<br><br>But in both cases, while trying to start an image, I have cpu 100%<br>
Of course, the same happens if I do this in #primitiveBitAnd<br><br>Any ideas what can be happening? because I tried to understand but nothing :(<br><br>Thanks in advance<br><br>Mariano<br><br><br><br><br><br><br><br><br>