Skip to content

Commit

Permalink
Various 64bit fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
Ian Rogers committed Jun 6, 2009
1 parent b67bdb5 commit 633ffa0
Showing 1 changed file with 14 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,6 @@
*/
public abstract class BaselineCompilerImpl extends BaselineCompiler implements BaselineConstants, SizeConstants {

static {
// Force resolution of BaselineMagic before using in genMagic
Object x = BaselineMagic.generateMagic(null, null, null, Offset.zero());
}

private final int parameterWords;
private Offset firstLocalOffset;

Expand All @@ -76,6 +71,11 @@ public abstract class BaselineCompilerImpl extends BaselineCompiler implements B
static final Offset FIVE_SLOTS = FOUR_SLOTS.plus(WORDSIZE);
private static final Offset MINUS_ONE_SLOT = NO_SLOT.minus(WORDSIZE);

static {
// Force resolution of BaselineMagic before using in genMagic (and after slots are set up)
Object x = BaselineMagic.generateMagic(null, null, null, Offset.zero());
}

/**
* Create a BaselineCompilerImpl object for the compilation of method.
*/
Expand Down Expand Up @@ -182,16 +182,16 @@ private void adjustStack(int size, boolean mayClobber) {
}
return;
case 1:
asm.emitPOP_Reg(S0);
asm.emitPOP_Reg(S1);
if (debug) {
asm.emitMOV_Reg_Imm(S0, 0xFA4FACE);
asm.emitMOV_Reg_Imm(S1, 0xFA4FACE);
}
return;
case 2:
asm.emitPOP_Reg(S0);
asm.emitPOP_Reg(S0);
asm.emitPOP_Reg(S1);
asm.emitPOP_Reg(S1);
if (debug) {
asm.emitMOV_Reg_Imm(S0, 0xFA5FACE);
asm.emitMOV_Reg_Imm(S1, 0xFA5FACE);
}
return;
}
Expand Down Expand Up @@ -1894,7 +1894,7 @@ protected final void emit_d2l() {
fr4.resolve(asm);
} else {
// Set up max int in XMM0
asm.emitMOVSD_Reg_Abs(XMM0, Magic.getTocPointer().plus(Entrypoints.maxlongFloatField.getOffset()));
asm.emitMOVSD_Reg_Abs(XMM0, Magic.getTocPointer().plus(Entrypoints.maxlongField.getOffset()));
// Set up value in XMM1
asm.emitMOVSD_Reg_RegInd(XMM1, SP);
adjustStack(WORDSIZE, true);
Expand Down Expand Up @@ -3823,7 +3823,7 @@ private void genEpilogue(int returnSize, int bytesPopped) {
asm.emitPOP_Reg(EBX); // restore non-volatile EBX register
if (VM.VerifyAssertions) VM._assert(EDI_SAVE_OFFSET.toInt() == -(2 * WORDSIZE));
asm.emitPOP_Reg(EDI); // restore non-volatile EDI register
adjustStack(WORDSIZE, true); // throw away CMID
asm.emitPOP_Reg(ECX); // throw away CMID
// SP == frame pointer
asm.emitPOP_RegDisp(TR, ArchEntrypoints.framePointerField.getOffset()); // discard frame
// return to caller, pop parameters from stack
Expand Down Expand Up @@ -4555,10 +4555,11 @@ static void emitDynamicLinkingSequence(Assembler asm, GPR reg, MemberReference r
int retryLabel = asm.getMachineCodeIndex(); // branch here after dynamic class loading
if (VM.BuildFor32Addr) {
asm.emitMOV_Reg_Abs(reg, Magic.getTocPointer().plus(tableOffset)); // reg is offsets table
asm.emitMOV_Reg_RegDisp(reg, reg, memberOffset); // reg is offset of member, or 0 if member's class isn't loaded
} else {
asm.emitMOV_Reg_Abs_Quad(reg, Magic.getTocPointer().plus(tableOffset)); // reg is offsets table
asm.emitMOVSXDQ_Reg_RegDisp(reg, reg, memberOffset); // reg is offset of member, or 0 if member's class isn't loaded
}
asm.emitMOV_Reg_RegDisp(reg, reg, memberOffset); // reg is offset of member, or 0 if member's class isn't loaded
if (NEEDS_DYNAMIC_LINK == 0) {
asm.emitTEST_Reg_Reg(reg, reg); // reg ?= NEEDS_DYNAMIC_LINK, is field's class loaded?
} else {
Expand Down

0 comments on commit 633ffa0

Please sign in to comment.