# HG changeset patch # User Josef Eisl # Date 1413886239 -7200 # Node ID 9147ad23314bdf589ef81b1f774696e792163574 # Parent 4c49f062d136ba3fd54c9efd5eaf820086789353 Remove FrameMap.stackSlotSize(). It gives the false impression that all slots are of the same size. diff -r 4c49f062d136 -r 9147ad23314b graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotEnterUnpackFramesStackFrameOp.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotEnterUnpackFramesStackFrameOp.java Tue Oct 21 11:23:37 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotEnterUnpackFramesStackFrameOp.java Tue Oct 21 12:10:39 2014 +0200 @@ -86,7 +86,7 @@ masm.decrementq(stackPointerRegister, totalFrameSize - 2 * crb.target.wordSize); // Save return registers after moving the frame. - final int stackSlotSize = frameMap.stackSlotSize(); + final int stackSlotSize = frameMap.getTarget().wordSize; Register integerResultRegister = registerConfig.getReturnRegister(Kind.Long); masm.movptr(new AMD64Address(stackPointerRegister, registerSaveLayout.registerToSlot(integerResultRegister) * stackSlotSize), integerResultRegister); diff -r 4c49f062d136 -r 9147ad23314b graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLeaveCurrentStackFrameOp.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLeaveCurrentStackFrameOp.java Tue Oct 21 11:23:37 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLeaveCurrentStackFrameOp.java Tue Oct 21 12:10:39 2014 +0200 @@ -52,7 +52,7 @@ Register stackPointer = registerConfig.getFrameRegister(); // Restore integer result register. - final int stackSlotSize = frameMap.stackSlotSize(); + final int stackSlotSize = frameMap.getTarget().wordSize; Register integerResultRegister = registerConfig.getReturnRegister(Kind.Long); masm.movptr(integerResultRegister, new AMD64Address(stackPointer, registerSaveLayout.registerToSlot(integerResultRegister) * stackSlotSize)); masm.movptr(rdx, new AMD64Address(stackPointer, registerSaveLayout.registerToSlot(rdx) * stackSlotSize)); diff -r 4c49f062d136 -r 9147ad23314b graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLeaveUnpackFramesStackFrameOp.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLeaveUnpackFramesStackFrameOp.java Tue Oct 21 11:23:37 2014 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotLeaveUnpackFramesStackFrameOp.java Tue Oct 21 12:10:39 2014 +0200 @@ -69,7 +69,7 @@ masm.movslq(new AMD64Address(threadRegister, threadLastJavaFpOffset), 0); // Restore return values. - final int stackSlotSize = frameMap.stackSlotSize(); + final int stackSlotSize = frameMap.getTarget().wordSize; Register integerResultRegister = registerConfig.getReturnRegister(Kind.Long); masm.movptr(integerResultRegister, new AMD64Address(stackPointerRegister, registerSaveLayout.registerToSlot(integerResultRegister) * stackSlotSize)); diff -r 4c49f062d136 -r 9147ad23314b graal/com.oracle.graal.lir/src/com/oracle/graal/lir/FrameMap.java --- a/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/FrameMap.java Tue Oct 21 11:23:37 2014 +0200 +++ b/graal/com.oracle.graal.lir/src/com/oracle/graal/lir/FrameMap.java Tue Oct 21 12:10:39 2014 +0200 @@ -121,15 +121,6 @@ } /** - * Gets the size of a stack slot. - * - * @return stack slot size - */ - public int stackSlotSize() { - return getTarget().wordSize; - } - - /** * Gets the frame size of the compiled frame, not including the size of the * {@link Architecture#getReturnAddressSize() return address slot}. * @@ -229,8 +220,8 @@ * @return the index of the stack slot */ public int indexForStackSlot(StackSlot slot) { - assert offsetForStackSlot(slot) % stackSlotSize() == 0; - return offsetForStackSlot(slot) / stackSlotSize(); + assert offsetForStackSlot(slot) % getTarget().wordSize == 0; + return offsetForStackSlot(slot) / getTarget().wordSize; } /** @@ -342,7 +333,7 @@ if (slots == 0) { return null; } - spillSize += (slots * stackSlotSize()); + spillSize += (slots * getTarget().wordSize); if (!objects.isEmpty()) { assert objects.length() <= slots; @@ -350,7 +341,7 @@ for (int slotIndex = 0; slotIndex < slots; slotIndex++) { StackSlot objectSlot = null; if (objects.get(slotIndex)) { - objectSlot = allocateNewSpillSlot(LIRKind.reference(Kind.Object), slotIndex * stackSlotSize()); + objectSlot = allocateNewSpillSlot(LIRKind.reference(Kind.Object), slotIndex * getTarget().wordSize); objectStackSlots.add(objectSlot); if (outObjectStackSlots != null) { outObjectStackSlots.add(objectSlot); @@ -373,7 +364,7 @@ } public ReferenceMap initReferenceMap(boolean hasRegisters) { - ReferenceMap refMap = getTarget().createReferenceMap(hasRegisters, frameSize() / stackSlotSize()); + ReferenceMap refMap = getTarget().createReferenceMap(hasRegisters, frameSize() / getTarget().wordSize); for (StackSlot slot : objectStackSlots) { setReference(slot, refMap); }