src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir.sparc/src/org/graalvm/compiler/lir/sparc/SPARCSaveRegistersOp.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir.sparc/src/org/graalvm/compiler/lir/sparc/SPARCSaveRegistersOp.java	Mon Mar 20 17:39:40 2017
--- new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir.sparc/src/org/graalvm/compiler/lir/sparc/SPARCSaveRegistersOp.java	Mon Mar 20 17:39:40 2017

*** 26,45 **** --- 26,44 ---- import static org.graalvm.compiler.lir.sparc.SPARCDelayedControlTransfer.DUMMY; import static jdk.vm.ci.code.ValueUtil.asStackSlot; import static jdk.vm.ci.code.ValueUtil.isStackSlot; import java.util.Arrays; import java.util.Set; import org.graalvm.compiler.asm.sparc.SPARCAddress; import org.graalvm.compiler.asm.sparc.SPARCMacroAssembler; import org.graalvm.compiler.lir.LIRInstructionClass; import org.graalvm.compiler.lir.LIRValueUtil; import org.graalvm.compiler.lir.Opcode; import org.graalvm.compiler.lir.StandardOp.SaveRegistersOp; import org.graalvm.compiler.lir.asm.CompilationResultBuilder; import org.graalvm.compiler.lir.framemap.FrameMap; + import org.graalvm.util.EconomicSet; import jdk.vm.ci.code.Register; import jdk.vm.ci.code.RegisterSaveLayout; import jdk.vm.ci.code.RegisterValue; import jdk.vm.ci.code.StackSlot;
*** 63,82 **** --- 62,81 ---- * The slots to which the registers are saved. */ @Def(STACK) protected final AllocatableValue[] slots; /** ! * Specifies if {@link #remove(EconomicSet)} should have an effect. */ protected final boolean supportsRemove; /** * * @param savedRegisters the registers saved by this operation which may be subject to ! * {@linkplain #remove(EconomicSet) pruning} * @param savedRegisterLocations the slots to which the registers are saved ! * @param supportsRemove determines if registers can be {@linkplain #remove(EconomicSet) pruned} */ public SPARCSaveRegistersOp(Register[] savedRegisters, AllocatableValue[] savedRegisterLocations, boolean supportsRemove) { super(TYPE, SIZE); assert Arrays.asList(savedRegisterLocations).stream().allMatch(LIRValueUtil::isVirtualStackSlot); this.savedRegisters = savedRegisters;
*** 115,132 **** --- 114,131 ---- public boolean supportsRemove() { return supportsRemove; } @Override ! public int remove(EconomicSet<Register> doNotSave) { if (!supportsRemove) { throw new UnsupportedOperationException(); } return prune(doNotSave, savedRegisters); } ! static int prune(EconomicSet<Register> toRemove, Register[] registers) { int pruned = 0; for (int i = 0; i < registers.length; i++) { if (registers[i] != null) { if (toRemove.contains(registers[i])) { registers[i] = null;

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir.sparc/src/org/graalvm/compiler/lir/sparc/SPARCSaveRegistersOp.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File