|
Does not happen with standard vm.
Error:
TextEditor class <none> umpTarget
umpTarget Nothing more expected ->type:
#'AbstractInstruction *'>
jumpTarget := cogit cCoerceSimple: (operands at: 0) to:
#'AbstractInstruction *'.
cogit assertSaneJumpTarget: jumpTarget.
(self isAnInstruction: jumpTarget) ifTrue:
[jumpTarget := cogit cCoerceSimple: jumpTarget address to:
#'AbstractInstruction *'].
self assert: jumpTarget ~= 0.
offset := jumpTarget signedIntFromLong - (address + 2)
signedIntFromLong.
(machineCodeSize = 0 "size not determined because no sizeJump
pass; generating initial trampolines"
ifTrue: [self isQuick: offset]
ifFalse: [machineCodeSize = 2]) ifTrue:
[machineCode
at: 0 put: 16r70 + conditionCode;
at: 1 put: (offset bitAnd: 16rFF).
^machineCodeSize := 2].
offset := jumpTarget signedIntFromLong - (address + 6)
signedIntFromLong.
machineCode
at: 0 put: 16r0F;
at: 1 put: 16r80 + conditionCode;
at: 2 put: (offset bitAnd: 16rFF);
at: 3 put: (offset >> 8 bitAnd: 16rFF);
at: 4 put: (offset >> 16 bitAnd: 16rFF);
at: 5 put: (offset >> 24 bitAnd: 16rFF).
^machineCodeSize := 6
|