# HG changeset patch # User Doug Simon # Date 1370359994 -7200 # Node ID 063a712fe8d8a4eccce1edcd14fc40c4f7fc75a3 # Parent b2141bc6e98e90d3271e557caa37ef8f7a72f086 converted remaining options in GraalOptions to new system (GRAAL-27) diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/GraalCompilerTest.java Tue Jun 04 17:33:14 2013 +0200 @@ -23,6 +23,7 @@ package com.oracle.graal.compiler.test; import static com.oracle.graal.api.code.CodeUtil.*; +import static com.oracle.graal.phases.GraalOptions.*; import java.lang.reflect.*; import java.util.*; @@ -420,7 +421,7 @@ InstalledCode installedCode = Debug.scope("Compiling", new Object[]{runtime, new DebugDumpScope(String.valueOf(id), true)}, new Callable() { public InstalledCode call() throws Exception { - final boolean printCompilation = GraalOptions.PrintCompilation && !TTY.isSuppressed(); + final boolean printCompilation = PrintCompilation.getValue() && !TTY.isSuppressed(); if (printCompilation) { TTY.println(String.format("@%-6d Graal %-70s %-45s %-50s ...", id, method.getDeclaringClass().getName(), method.getName(), method.getSignature())); } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/backend/AllocatorTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/backend/AllocatorTest.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/backend/AllocatorTest.java Tue Jun 04 17:33:14 2013 +0200 @@ -23,6 +23,7 @@ package com.oracle.graal.compiler.test.backend; import static com.oracle.graal.api.code.CodeUtil.*; +import static com.oracle.graal.phases.GraalOptions.*; import java.util.*; import java.util.concurrent.*; @@ -112,7 +113,7 @@ private RegisterStats getRegisterStats(final StructuredGraph graph) { final PhasePlan phasePlan = getDefaultPhasePlan(); - final Assumptions assumptions = new Assumptions(GraalOptions.OptAssumptions); + final Assumptions assumptions = new Assumptions(OptAssumptions.getValue()); final LIR lir = Debug.scope("FrontEnd", new Callable() { diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/IterativeInliningTest.java --- a/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/IterativeInliningTest.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.compiler.test/src/com/oracle/graal/compiler/test/ea/IterativeInliningTest.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,7 @@ */ package com.oracle.graal.compiler.test.ea; +import static com.oracle.graal.phases.GraalOptions.*; import static org.junit.Assert.*; import java.util.concurrent.*; @@ -100,7 +101,7 @@ private void processMethod(final String snippet) { graph = parse(snippet); - GraalOptions.OptEarlyReadElimination = true; + OptEarlyReadElimination.setValue(true); HighTierContext context = new HighTierContext(runtime(), new Assumptions(false), replacements); new IterativeInliningPhase(replacements, null, getDefaultPhasePlan(), OptimisticOptimizations.ALL, false).apply(graph, context); } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/GraalCompiler.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.compiler; +import static com.oracle.graal.phases.GraalOptions.*; + import java.util.*; import java.util.concurrent.*; @@ -77,7 +79,7 @@ Debug.scope("GraalCompiler", new Object[]{graph, runtime}, new Runnable() { public void run() { - final Assumptions assumptions = new Assumptions(GraalOptions.OptAssumptions); + final Assumptions assumptions = new Assumptions(OptAssumptions.getValue()); final LIR lir = Debug.scope("FrontEnd", new Callable() { public LIR call() { @@ -138,20 +140,20 @@ new VerifyUsageWithEquals(runtime, Register.class).apply(graph); } - if (GraalOptions.OptCanonicalizer) { + if (OptCanonicalizer.getValue()) { new CanonicalizerPhase.Instance(runtime, assumptions).apply(graph); } HighTierContext highTierContext = new HighTierContext(runtime, assumptions, replacements); if (Inline.getValue() && !plan.isPhaseDisabled(InliningPhase.class)) { - if (GraalOptions.IterativeInlining) { - new IterativeInliningPhase(replacements, cache, plan, optimisticOpts, GraalOptions.OptEarlyReadElimination).apply(graph, highTierContext); + if (IterativeInlining.getValue()) { + new IterativeInliningPhase(replacements, cache, plan, optimisticOpts, OptEarlyReadElimination.getValue()).apply(graph, highTierContext); } else { new InliningPhase(runtime, null, replacements, assumptions, cache, plan, optimisticOpts).apply(graph); new DeadCodeEliminationPhase().apply(graph); - if (GraalOptions.ConditionalElimination && GraalOptions.OptCanonicalizer) { + if (ConditionalElimination.getValue() && OptCanonicalizer.getValue()) { new CanonicalizerPhase.Instance(runtime, assumptions).apply(graph); new IterativeConditionalEliminationPhase().apply(graph, highTierContext); } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/IntervalWalker.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/IntervalWalker.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/IntervalWalker.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,11 +22,12 @@ */ package com.oracle.graal.compiler.alloc; +import static com.oracle.graal.phases.GraalOptions.*; + import com.oracle.graal.compiler.alloc.Interval.RegisterBinding; import com.oracle.graal.compiler.alloc.Interval.RegisterBindingLists; import com.oracle.graal.compiler.alloc.Interval.State; import com.oracle.graal.debug.*; -import com.oracle.graal.phases.*; /** */ @@ -208,7 +209,7 @@ boolean isActive = currentInterval.from() <= toOpId; int opId = isActive ? currentInterval.from() : toOpId; - if (GraalOptions.TraceLinearScanLevel >= 2 && !TTY.isSuppressed()) { + if (TraceLinearScanLevel.getValue() >= 2 && !TTY.isSuppressed()) { if (currentPosition < opId) { TTY.println(); TTY.println("walkTo(%d) *", opId); @@ -239,7 +240,7 @@ private void intervalMoved(Interval interval, State from, State to) { // intervalMoved() is called whenever an interval moves from one interval list to another. // In the implementation of this method it is prohibited to move the interval to any list. - if (GraalOptions.TraceLinearScanLevel >= 4 && !TTY.isSuppressed()) { + if (TraceLinearScanLevel.getValue() >= 4 && !TTY.isSuppressed()) { TTY.print(from.toString() + " to " + to.toString()); TTY.fillTo(23); TTY.out().println(interval.logString(allocator)); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScan.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScan.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScan.java Tue Jun 04 17:33:14 2013 +0200 @@ -26,6 +26,7 @@ import static com.oracle.graal.api.code.ValueUtil.*; import static com.oracle.graal.compiler.GraalDebugConfig.*; import static com.oracle.graal.lir.LIRValueUtil.*; +import static com.oracle.graal.phases.GraalOptions.*; import java.util.*; @@ -502,7 +503,7 @@ // called once before assignment of register numbers void eliminateSpillMoves() { - if (GraalOptions.TraceLinearScanLevel >= 3) { + if (TraceLinearScanLevel.getValue() >= 3) { TTY.println(" Eliminating unnecessary spill moves"); } @@ -536,7 +537,7 @@ if (!isRegister(curInterval.location()) && curInterval.alwaysInMemory()) { // move target is a stack slot that is always correct, so eliminate // instruction - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println("eliminating move from interval %d to %d", operandNumber(move.getInput()), operandNumber(move.getResult())); } instructions.set(j, null); // null-instructions are deleted by assignRegNum @@ -562,7 +563,7 @@ insertionBuffer.append(j + 1, ir.spillMoveFactory.createMove(toLocation, fromLocation)); - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { StackSlot slot = interval.spillSlot(); TTY.println("inserting move after definition of interval %d to stack slot %s at opId %d", interval.operandNumber, slot, opId); } @@ -594,7 +595,7 @@ assert temp.spillDefinitionPos() >= temp.from() : "invalid order"; assert temp.spillDefinitionPos() <= temp.from() + 2 : "only intervals defined once at their start-pos can be optimized"; - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println("interval %d (from %d to %d) must be stored at %d", temp.operandNumber, temp.from(), temp.to(), temp.spillDefinitionPos()); } @@ -697,7 +698,7 @@ int operandNum = operandNumber(operand); if (!liveKill.get(operandNum)) { liveGen.set(operandNum); - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" Setting liveGen for operand %d at instruction %d", operandNum, op.id()); } } @@ -719,7 +720,7 @@ int operandNum = operandNumber(operand); if (!liveKill.get(operandNum)) { liveGen.set(operandNum); - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" Setting liveGen for LIR opId %d, operand %d because of state for %s", op.id(), operandNum, op); } } @@ -762,7 +763,7 @@ blockData.get(block).liveIn = new BitSet(liveSize); blockData.get(block).liveOut = new BitSet(liveSize); - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println("liveGen B%d %s", block.getId(), blockData.get(block).liveGen); TTY.println("liveKill B%d %s", block.getId(), blockData.get(block).liveKill); } @@ -851,7 +852,7 @@ liveIn.or(blockData.get(block).liveGen); } - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { traceLiveness(changeOccurredInBlock, iterationCount, block); } } @@ -971,7 +972,7 @@ if (!isProcessed(operand)) { return; } - if (GraalOptions.TraceLinearScanLevel >= 2 && kind == null) { + if (TraceLinearScanLevel.getValue() >= 2 && kind == null) { TTY.println(" use %s from %d to %d (%s)", operand, from, to, registerPriority.name()); } @@ -990,7 +991,7 @@ if (!isProcessed(operand)) { return; } - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println(" temp %s tempPos %d (%s)", operand, tempPos, RegisterPriority.MustHaveRegister.name()); } @@ -1011,7 +1012,7 @@ if (!isProcessed(operand)) { return; } - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println(" def %s defPos %d (%s)", operand, defPos, registerPriority.name()); } @@ -1032,7 +1033,7 @@ // also add register priority for dead intervals interval.addRange(defPos, defPos + 1); interval.addUsePos(defPos, registerPriority); - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println("Warning: def of operand %s at %d occurs without use", operand, defPos); } } @@ -1093,7 +1094,7 @@ assert blockForId(op.id()).getPredecessorCount() == 0 : "move from stack must be in first block"; assert isVariable(move.getResult()) : "result of move must be a variable"; - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println("found move from stack slot %s to %s", slot, move.getResult()); } } @@ -1123,7 +1124,7 @@ from.setLocationHint(to); } - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println("operation at opId %d: added hint from interval %d to %d", op.id(), from.operandNumber, to.operandNumber); } return registerHint; @@ -1156,7 +1157,7 @@ for (int operandNum = live.nextSetBit(0); operandNum >= 0; operandNum = live.nextSetBit(operandNum + 1)) { assert live.get(operandNum) : "should not stop here otherwise"; AllocatableValue operand = operandFor(operandNum); - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println("live in %s to %d", operand, blockTo + 2); } @@ -1186,7 +1187,7 @@ addTemp(r.asValue(), opId, RegisterPriority.None, Kind.Illegal); } } - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println("operation destroys all caller-save registers"); } } @@ -1437,7 +1438,7 @@ Interval result = interval.getSplitChildAtOpId(opId, mode, this); if (result != null) { - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println("Split child at pos " + opId + " of interval " + interval.toString() + " is " + result.toString()); } return result; @@ -1491,7 +1492,7 @@ void resolveFindInsertPos(Block fromBlock, Block toBlock, MoveResolver moveResolver) { if (fromBlock.getSuccessorCount() <= 1) { - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println("inserting moves at end of fromBlock B%d", fromBlock.getId()); } @@ -1505,7 +1506,7 @@ } } else { - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println("inserting moves at beginning of toBlock B%d", toBlock.getId()); } @@ -1550,7 +1551,7 @@ // prevent optimization of two consecutive blocks if (!blockCompleted.get(pred.getLinearScanNumber()) && !blockCompleted.get(sux.getLinearScanNumber())) { - if (GraalOptions.TraceLinearScanLevel >= 3) { + if (TraceLinearScanLevel.getValue() >= 3) { TTY.println(" optimizing empty block B%d (pred: B%d, sux: B%d)", block.getId(), pred.getId(), sux.getId()); } blockCompleted.set(block.getLinearScanNumber()); @@ -1577,7 +1578,7 @@ // check for duplicate edges between the same blocks (can happen with switch // blocks) if (!alreadyResolved.get(toBlock.getLinearScanNumber())) { - if (GraalOptions.TraceLinearScanLevel >= 3) { + if (GraalOptions.TraceLinearScanLevel.getValue() >= 3) { TTY.println(" processing edge between B%d and B%d", fromBlock.getId(), toBlock.getId()); } alreadyResolved.set(toBlock.getLinearScanNumber()); @@ -1656,7 +1657,7 @@ } void computeOopMap(IntervalWalker iw, LIRInstruction op, BitSet registerRefMap, BitSet frameRefMap) { - if (GraalOptions.TraceLinearScanLevel >= 3) { + if (TraceLinearScanLevel.getValue() >= 3) { TTY.println("creating oop map at opId %d", op.id()); } @@ -1865,7 +1866,7 @@ } void printIntervals(String label) { - if (GraalOptions.TraceLinearScanLevel >= 1) { + if (TraceLinearScanLevel.getValue() >= 1) { int i; TTY.println(); TTY.println(label); @@ -1895,27 +1896,27 @@ boolean verify() { // (check that all intervals have a correct register and that no registers are overwritten) - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println(" verifying intervals *"); } verifyIntervals(); - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println(" verifying that no oops are in fixed intervals *"); } // verifyNoOopsInFixedIntervals(); - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println(" verifying that unpinned constants are not alive across block boundaries"); } verifyConstants(); - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println(" verifying register allocation *"); } verifyRegisters(); - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println(" no errors found *"); } @@ -2067,7 +2068,7 @@ // visit all operands where the liveAtEdge bit is set for (int operandNum = liveAtEdge.nextSetBit(0); operandNum >= 0; operandNum = liveAtEdge.nextSetBit(operandNum + 1)) { - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println("checking interval %d of block B%d", operandNum, block.getId()); } Value operand = operandFor(operandNum); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScanWalker.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScanWalker.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScanWalker.java Tue Jun 04 17:33:14 2013 +0200 @@ -25,6 +25,7 @@ import static com.oracle.graal.api.code.CodeUtil.*; import static com.oracle.graal.api.code.ValueUtil.*; import static com.oracle.graal.lir.LIRValueUtil.*; +import static com.oracle.graal.phases.GraalOptions.*; import java.util.*; @@ -38,7 +39,6 @@ import com.oracle.graal.lir.*; import com.oracle.graal.lir.StandardOp.MoveOp; import com.oracle.graal.nodes.cfg.*; -import com.oracle.graal.phases.*; import com.oracle.graal.phases.util.*; /** @@ -297,7 +297,7 @@ int optimalSplitPos = -1; if (minSplitPos == maxSplitPos) { // trivial case, no optimization of split position possible - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" min-pos and max-pos are equal, no optimization possible"); } optimalSplitPos = minSplitPos; @@ -321,7 +321,7 @@ assert minBlock.getLinearScanNumber() <= maxBlock.getLinearScanNumber() : "invalid order"; if (minBlock == maxBlock) { // split position cannot be moved to block boundary : so split as late as possible - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" cannot move split pos to block boundary because minPos and maxPos are in same block"); } optimalSplitPos = maxSplitPos; @@ -333,14 +333,14 @@ // as mustHaveRegister) with a hole before each definition. When the register is // needed // for the second definition : an earlier reloading is unnecessary. - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" interval has hole just before maxSplitPos, so splitting at maxSplitPos"); } optimalSplitPos = maxSplitPos; } else { // seach optimal block boundary between minSplitPos and maxSplitPos - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" moving split pos to optimal block boundary between block B%d and B%d", minBlock.getId(), maxBlock.getId()); } @@ -349,7 +349,7 @@ // max-position : // then split before this loop int loopEndPos = interval.nextUsageExact(RegisterPriority.LiveAtLoopEnd, allocator.getLastLirInstructionId(minBlock) + 2); - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" loop optimization: loop end found at pos %d", loopEndPos); } @@ -364,7 +364,7 @@ // of the interval (normally, only mustHaveRegister causes a reloading) Block loopBlock = allocator.blockForId(loopEndPos); - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" interval is used in loop that ends in block B%d, so trying to move maxBlock back from B%d to B%d", loopBlock.getId(), maxBlock.getId(), loopBlock.getId()); } @@ -373,11 +373,11 @@ optimalSplitPos = findOptimalSplitPos(minBlock, loopBlock, allocator.getLastLirInstructionId(loopBlock) + 2); if (optimalSplitPos == allocator.getLastLirInstructionId(loopBlock) + 2) { optimalSplitPos = -1; - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" loop optimization not necessary"); } } else { - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" loop optimization successful"); } } @@ -391,7 +391,7 @@ } } } - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" optimal split position: %d", optimalSplitPos); } @@ -403,13 +403,13 @@ // 1) the left part has already a location assigned // 2) the right part is sorted into to the unhandled-list void splitBeforeUsage(Interval interval, int minSplitPos, int maxSplitPos) { - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println("----- splitting interval: "); } - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(interval.logString(allocator)); } - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println(" between %d and %d", minSplitPos, maxSplitPos); } @@ -427,7 +427,7 @@ if (optimalSplitPos == interval.to() && interval.nextUsage(RegisterPriority.MustHaveRegister, minSplitPos) == Integer.MAX_VALUE) { // the split position would be just before the end of the interval // . no split at all necessary - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" no split necessary because optimal split position is at end of interval"); } return; @@ -442,7 +442,7 @@ optimalSplitPos = (optimalSplitPos - 1) | 1; } - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" splitting at position %d", optimalSplitPos); } assert allocator.isBlockBegin(optimalSplitPos) || (optimalSplitPos % 2 == 1) : "split pos must be odd when not on block boundary"; @@ -455,10 +455,10 @@ assert splitPart.from() >= currentInterval.currentFrom() : "cannot append new interval before current walk position"; unhandledLists.addToListSortedByStartAndUsePositions(RegisterBinding.Any, splitPart); - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println(" split interval in two parts (insertMoveWhenActivated: %b)", moveNecessary); } - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.print(" "); TTY.println(interval.logString(allocator)); TTY.print(" "); @@ -476,7 +476,7 @@ int maxSplitPos = currentPosition; int minSplitPos = Math.max(interval.previousUsage(RegisterPriority.ShouldHaveRegister, maxSplitPos) + 1, interval.from()); - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.print("----- splitting and spilling interval: "); TTY.println(interval.logString(allocator)); TTY.println(" between %d and %d", minSplitPos, maxSplitPos); @@ -490,7 +490,7 @@ if (minSplitPos == interval.from()) { // the whole interval is never used, so spill it entirely to memory - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println(" spilling entire interval because split pos is at beginning of interval"); TTY.println(" use positions: " + interval.usePosList().size()); } @@ -509,7 +509,7 @@ if (isRegister(parent.location())) { if (parent.firstUsage(RegisterPriority.ShouldHaveRegister) == Integer.MAX_VALUE) { // parent is never used, so kick it out of its assigned register - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" kicking out interval %d out of its register because it is never used", parent.operandNumber); } allocator.assignSpillSlot(parent); @@ -534,7 +534,7 @@ optimalSplitPos = (optimalSplitPos - 1) | 1; } - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" splitting at position %d", optimalSplitPos); } assert allocator.isBlockBegin(optimalSplitPos) || (optimalSplitPos % 2 == 1) : "split pos must be odd when not on block boundary"; @@ -545,7 +545,7 @@ allocator.changeSpillState(spilledPart, optimalSplitPos); if (!allocator.isBlockBegin(optimalSplitPos)) { - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" inserting move from interval %d to %d", interval.operandNumber, spilledPart.operandNumber); } insertMove(optimalSplitPos, interval, spilledPart); @@ -555,7 +555,7 @@ assert spilledPart.currentSplitChild() == interval : "overwriting wrong currentSplitChild"; spilledPart.makeCurrentSplitChild(); - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println(" split interval in two parts"); TTY.print(" "); TTY.println(interval.logString(allocator)); @@ -604,7 +604,7 @@ } boolean allocFreeRegister(Interval interval) { - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println("trying to find free register for " + interval.logString(allocator)); } @@ -620,7 +620,7 @@ // (either as a fixed register or a normal allocated register in the past) // only intervals overlapping with cur are processed, non-overlapping invervals can be // ignored safely - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" state of registers:"); for (Register register : availableRegs) { int i = register.number; @@ -632,7 +632,7 @@ Interval locationHint = interval.locationHint(true); if (locationHint != null && locationHint.location() != null && isRegister(locationHint.location())) { hint = asRegister(locationHint.location()); - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" hint register %d from interval %s", hint.number, locationHint.logString(allocator)); } } @@ -676,7 +676,7 @@ splitPos = usePos[reg.number]; interval.assignLocation(reg.asValue(interval.kind())); - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println("selected register %d", reg.number); } @@ -702,7 +702,7 @@ // Split an Interval and spill it to memory so that cur can be placed in a register void allocLockedRegister(Interval interval) { - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println("need to split and spill to get register for " + interval.logString(allocator)); } @@ -715,7 +715,7 @@ spillCollectActiveAny(); spillCollectInactiveAny(interval); - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" state of registers:"); for (Register reg : availableRegs) { int i = reg.number; @@ -748,7 +748,7 @@ if (reg == null || usePos[reg.number] <= firstUsage) { // the first use of cur is later than the spilling position -> spill cur - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println("able to spill current interval. firstUsage(register): %d, usePos: %d", firstUsage, reg == null ? 0 : usePos[reg.number]); } @@ -767,7 +767,7 @@ int splitPos = blockPos[reg.number]; - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println("decided to use register %d", reg.number); } assert splitPos > 0 : "invalid splitPos"; @@ -796,7 +796,7 @@ if (isOdd(pos)) { // the current instruction is a call that blocks all registers if (pos < allocator.maxOpId() && allocator.hasCall(pos + 1) && interval.to() > pos + 1) { - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" free register cannot be available because all registers blocked by following call"); } @@ -888,11 +888,11 @@ Interval interval = currentInterval; boolean result = true; - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println("+++++ activating interval " + interval.logString(allocator)); } - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" splitParent: %s, insertMoveWhenActivated: %b", interval.splitParent().operandNumber, interval.insertMoveWhenActivated()); } @@ -901,7 +901,7 @@ // activating an interval that has a stack slot assigned . split it at first use // position // used for method parameters - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" interval has spill slot assigned (method parameter) . split it before first use"); } splitStackInterval(interval); @@ -911,7 +911,7 @@ if (interval.location() == null) { // interval has not assigned register . normal allocation // (this is the normal case for most intervals) - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" normal allocation of register"); } @@ -937,7 +937,7 @@ assert interval.isSplitChild(); assert interval.currentSplitChild() != null; assert !interval.currentSplitChild().operand.equals(operand) : "cannot insert move between same interval"; - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println("Inserting move from interval %d to %d because insertMoveWhenActivated is set", interval.currentSplitChild().operandNumber, interval.operandNumber); } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/MoveResolver.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/MoveResolver.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/MoveResolver.java Tue Jun 04 17:33:14 2013 +0200 @@ -23,6 +23,7 @@ package com.oracle.graal.compiler.alloc; import static com.oracle.graal.api.code.ValueUtil.*; +import static com.oracle.graal.phases.GraalOptions.*; import java.util.*; @@ -30,7 +31,6 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.debug.*; import com.oracle.graal.lir.*; -import com.oracle.graal.phases.*; /** */ @@ -201,7 +201,7 @@ insertionBuffer.append(insertIdx, allocator.ir.spillMoveFactory.createMove(toOpr, fromOpr)); - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println("MoveResolver: inserted move from %d (%s) to %d (%s)", fromInterval.operandNumber, fromInterval.location(), toInterval.operandNumber, toInterval.location()); } } @@ -213,7 +213,7 @@ AllocatableValue toOpr = toInterval.operand; insertionBuffer.append(insertIdx, allocator.ir.spillMoveFactory.createMove(toOpr, fromOpr)); - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.print("MoveResolver: inserted move from constant %s to %d (%s)", fromOpr, toInterval.operandNumber, toInterval.location()); } } @@ -285,7 +285,7 @@ } spillInterval.assignLocation(spillSlot); - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println("created new Interval %s for spilling", spillInterval.operand); } @@ -327,7 +327,7 @@ } void addMapping(Interval fromInterval, Interval toInterval) { - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println("MoveResolver: adding mapping from interval %d (%s) to interval %d (%s)", fromInterval.operandNumber, fromInterval.location(), toInterval.operandNumber, toInterval.location()); } @@ -339,7 +339,7 @@ } void addMapping(Value fromOpr, Interval toInterval) { - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println("MoveResolver: adding mapping from %s to %d (%s)", fromOpr, toInterval.operandNumber, toInterval.location()); } assert isConstant(fromOpr) : "only for constants"; diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/RegisterVerifier.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/RegisterVerifier.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/RegisterVerifier.java Tue Jun 04 17:33:14 2013 +0200 @@ -23,6 +23,7 @@ package com.oracle.graal.compiler.alloc; import static com.oracle.graal.api.code.ValueUtil.*; +import static com.oracle.graal.phases.GraalOptions.*; import java.util.*; @@ -33,7 +34,6 @@ import com.oracle.graal.lir.*; import com.oracle.graal.lir.LIRInstruction.*; import com.oracle.graal.nodes.cfg.*; -import com.oracle.graal.phases.*; import com.oracle.graal.phases.util.*; /** @@ -92,7 +92,7 @@ } private void processBlock(Block block) { - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println(); TTY.println("processBlock B%d", block.getId()); } @@ -100,7 +100,7 @@ // must copy state because it is modified Interval[] inputState = copy(stateForBlock(block)); - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println("Input-State of intervals:"); TTY.print(" "); for (int i = 0; i < stateSize(); i++) { @@ -142,7 +142,7 @@ savedStateCorrect = false; savedState[i] = null; - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println("processSuccessor B%d: invalidating slot %d", block.getId(), i); } } @@ -151,12 +151,12 @@ if (savedStateCorrect) { // already processed block with correct inputState - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println("processSuccessor B%d: previous visit already correct", block.getId()); } } else { // must re-visit this block - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println("processSuccessor B%d: must re-visit because input state changed", block.getId()); } addToWorkList(block); @@ -164,7 +164,7 @@ } else { // block was not processed before, so set initial inputState - if (GraalOptions.TraceLinearScanLevel >= 2) { + if (TraceLinearScanLevel.getValue() >= 2) { TTY.println("processSuccessor B%d: initial visit", block.getId()); } @@ -182,11 +182,11 @@ Register reg = asRegister(location); int regNum = reg.number; if (interval != null) { - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" %s = %s", reg, interval.operand); } } else if (inputState[regNum] != null) { - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(" %s = null", reg); } } @@ -209,7 +209,7 @@ for (int i = 0; i < ops.size(); i++) { final LIRInstruction op = ops.get(i); - if (GraalOptions.TraceLinearScanLevel >= 4) { + if (TraceLinearScanLevel.getValue() >= 4) { TTY.println(op.toStringWithIdPrefix()); } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java Tue Jun 04 17:33:14 2013 +0200 @@ -26,6 +26,7 @@ import static com.oracle.graal.api.code.ValueUtil.*; import static com.oracle.graal.api.meta.Value.*; import static com.oracle.graal.lir.LIRValueUtil.*; +import static com.oracle.graal.phases.GraalOptions.*; import java.util.*; import java.util.Map.Entry; @@ -46,7 +47,6 @@ import com.oracle.graal.nodes.extended.*; import com.oracle.graal.nodes.spi.*; import com.oracle.graal.nodes.virtual.*; -import com.oracle.graal.phases.*; import com.oracle.graal.phases.util.*; /** @@ -259,7 +259,7 @@ } public void append(LIRInstruction op) { - if (GraalOptions.PrintIRWithLIR && !TTY.isSuppressed()) { + if (PrintIRWithLIR.getValue() && !TTY.isSuppressed()) { if (currentInstruction != null && lastInstructionPrinted != currentInstruction) { lastInstructionPrinted = currentInstruction; InstructionPrinter ip = new InstructionPrinter(TTY.out()); @@ -273,7 +273,7 @@ } public void doBlock(Block block) { - if (GraalOptions.PrintIRWithLIR) { + if (PrintIRWithLIR.getValue()) { TTY.print(block.toString()); } @@ -284,7 +284,7 @@ append(new LabelOp(new Label(), block.isAligned())); - if (GraalOptions.TraceLIRGeneratorLevel >= 1) { + if (TraceLIRGeneratorLevel.getValue() >= 1) { TTY.println("BEGIN Generating LIR for block B" + block.getId()); } @@ -315,12 +315,12 @@ } } } - if (GraalOptions.TraceLIRGeneratorLevel >= 2) { + if (TraceLIRGeneratorLevel.getValue() >= 2) { if (fs == null) { TTY.println("STATE RESET"); } else { TTY.println("STATE CHANGE (singlePred)"); - if (GraalOptions.TraceLIRGeneratorLevel >= 3) { + if (TraceLIRGeneratorLevel.getValue() >= 3) { TTY.println(fs.toString(Node.Verbosity.Debugger)); } } @@ -331,7 +331,7 @@ List nodes = lir.nodesFor(block); for (int i = 0; i < nodes.size(); i++) { Node instr = nodes.get(i); - if (GraalOptions.TraceLIRGeneratorLevel >= 3) { + if (TraceLIRGeneratorLevel.getValue() >= 3) { TTY.println("LIRGen for " + instr); } FrameState stateAfter = null; @@ -358,9 +358,9 @@ if (stateAfter != null) { lastState = stateAfter; assert checkStateReady(lastState); - if (GraalOptions.TraceLIRGeneratorLevel >= 2) { + if (TraceLIRGeneratorLevel.getValue() >= 2) { TTY.println("STATE CHANGE"); - if (GraalOptions.TraceLIRGeneratorLevel >= 3) { + if (TraceLIRGeneratorLevel.getValue() >= 3) { TTY.println(stateAfter.toString(Node.Verbosity.Debugger)); } } @@ -373,7 +373,7 @@ emitJump(getLIRBlock((FixedNode) successors.first())); } - if (GraalOptions.TraceLIRGeneratorLevel >= 1) { + if (TraceLIRGeneratorLevel.getValue() >= 1) { TTY.println("END Generating LIR for block B" + block.getId()); } @@ -384,7 +384,7 @@ blockLastState.put(block, lastState); currentBlock = null; - if (GraalOptions.PrintIRWithLIR) { + if (PrintIRWithLIR.getValue()) { TTY.println(); } } @@ -414,7 +414,7 @@ } private void doRoot(ValueNode instr) { - if (GraalOptions.TraceLIRGeneratorLevel >= 2) { + if (TraceLIRGeneratorLevel.getValue() >= 2) { TTY.println("Emitting LIR for instruction " + instr); } currentInstruction = instr; @@ -484,7 +484,7 @@ } private void moveToPhi(MergeNode merge, AbstractEndNode pred) { - if (GraalOptions.TraceLIRGeneratorLevel >= 1) { + if (TraceLIRGeneratorLevel.getValue() >= 1) { TTY.println("MOVE TO PHI from " + pred + " to " + merge); } PhiResolver resolver = new PhiResolver(this); @@ -707,7 +707,7 @@ int switchRangeCount = switchRangeCount(x); if (switchRangeCount == 0) { emitJump(getLIRBlock(x.defaultSuccessor())); - } else if (switchRangeCount >= GraalOptions.MinimumJumpTableSize && keyCount / (double) valueRange >= GraalOptions.MinTableSwitchDensity) { + } else if (switchRangeCount >= MinimumJumpTableSize.getValue() && keyCount / (double) valueRange >= MinTableSwitchDensity.getValue()) { int minValue = x.keyAt(0).asInt(); assert valueRange < Integer.MAX_VALUE; LabelRef[] targets = new LabelRef[(int) valueRange]; @@ -718,7 +718,7 @@ targets[x.keyAt(i).asInt() - minValue] = getLIRBlock(x.keySuccessor(i)); } emitTableSwitch(minValue, defaultTarget, targets, value); - } else if (keyCount / switchRangeCount >= GraalOptions.RangeTestsSwitchDensity) { + } else if (keyCount / switchRangeCount >= RangeTestsSwitchDensity.getValue()) { emitSwitchRanges(x, switchRangeCount, value, defaultTarget); } else { emitSequentialSwitch(x, value, defaultTarget); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/HighTier.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/HighTier.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/HighTier.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.compiler.phases; +import static com.oracle.graal.phases.GraalOptions.*; + import com.oracle.graal.loop.phases.*; import com.oracle.graal.nodes.spi.Lowerable.LoweringType; import com.oracle.graal.phases.*; @@ -32,35 +34,35 @@ public class HighTier extends PhaseSuite { public HighTier() { - if (GraalOptions.FullUnroll) { + if (FullUnroll.getValue()) { addPhase(new LoopFullUnrollPhase()); } - if (GraalOptions.OptTailDuplication) { + if (OptTailDuplication.getValue()) { addPhase(new TailDuplicationPhase()); } - if (GraalOptions.PartialEscapeAnalysis) { - addPhase(new PartialEscapeAnalysisPhase(true, GraalOptions.OptEarlyReadElimination)); + if (PartialEscapeAnalysis.getValue()) { + addPhase(new PartialEscapeAnalysisPhase(true, OptEarlyReadElimination.getValue())); } - if (GraalOptions.OptConvertDeoptsToGuards) { + if (OptConvertDeoptsToGuards.getValue()) { addPhase(new ConvertDeoptimizeToGuardPhase()); } addPhase(new LockEliminationPhase()); - if (GraalOptions.OptLoopTransform) { + if (OptLoopTransform.getValue()) { addPhase(new LoopTransformHighPhase()); addPhase(new LoopTransformLowPhase()); } addPhase(new RemoveValueProxyPhase()); - if (GraalOptions.CullFrameStates) { + if (CullFrameStates.getValue()) { addPhase(new CullFrameStatesPhase()); } - if (GraalOptions.OptCanonicalizer) { + if (OptCanonicalizer.getValue()) { addPhase(new CanonicalizerPhase()); } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/MidTier.java --- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/MidTier.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/phases/MidTier.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.compiler.phases; +import static com.oracle.graal.phases.GraalOptions.*; + import com.oracle.graal.loop.phases.*; import com.oracle.graal.phases.*; import com.oracle.graal.phases.common.*; @@ -30,40 +32,40 @@ public class MidTier extends PhaseSuite { public MidTier() { - if (GraalOptions.OptPushThroughPi) { + if (OptPushThroughPi.getValue()) { addPhase(new PushThroughPiPhase()); - if (GraalOptions.OptCanonicalizer) { + if (OptCanonicalizer.getValue()) { addPhase(new CanonicalizerPhase()); } } - if (GraalOptions.OptFloatingReads) { + if (OptFloatingReads.getValue()) { IncrementalCanonicalizerPhase canonicalizer = new IncrementalCanonicalizerPhase<>(); canonicalizer.addPhase(new FloatingReadPhase()); addPhase(canonicalizer); - if (GraalOptions.OptReadElimination) { + if (OptReadElimination.getValue()) { addPhase(new ReadEliminationPhase()); } } addPhase(new RemoveValueProxyPhase()); - if (GraalOptions.OptCanonicalizer) { + if (OptCanonicalizer.getValue()) { addPhase(new CanonicalizerPhase()); } - if (GraalOptions.OptEliminatePartiallyRedundantGuards) { + if (OptEliminatePartiallyRedundantGuards.getValue()) { addPhase(new EliminatePartiallyRedundantGuardsPhase(false, true)); } - if (GraalOptions.ConditionalElimination && GraalOptions.OptCanonicalizer) { + if (ConditionalElimination.getValue() && OptCanonicalizer.getValue()) { addPhase(new IterativeConditionalEliminationPhase()); } - if (GraalOptions.OptEliminatePartiallyRedundantGuards) { + if (OptEliminatePartiallyRedundantGuards.getValue()) { addPhase(new EliminatePartiallyRedundantGuardsPhase(true, true)); } - if (GraalOptions.OptCanonicalizer) { + if (OptCanonicalizer.getValue()) { addPhase(new CanonicalizerPhase()); } @@ -73,7 +75,7 @@ addPhase(new GuardLoweringPhase()); - if (GraalOptions.OptCanonicalizer) { + if (OptCanonicalizer.getValue()) { addPhase(new CanonicalizerPhase()); } } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java Tue Jun 04 17:33:14 2013 +0200 @@ -50,7 +50,6 @@ import com.oracle.graal.lir.asm.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.cfg.*; -import com.oracle.graal.phases.*; /** * HotSpot AMD64 specific backend. @@ -75,7 +74,7 @@ * the current frame */ protected static void emitStackOverflowCheck(TargetMethodAssembler tasm, boolean afterFrameInit) { - if (GraalOptions.StackShadowPages > 0) { + if (StackShadowPages.getValue() > 0) { AMD64MacroAssembler asm = (AMD64MacroAssembler) tasm.asm; int frameSize = tasm.frameMap.frameSize(); @@ -83,7 +82,7 @@ int lastFramePage = frameSize / unsafe.pageSize(); // emit multiple stack bangs for methods with frames larger than a page for (int i = 0; i <= lastFramePage; i++) { - int disp = (i + GraalOptions.StackShadowPages) * unsafe.pageSize(); + int disp = (i + StackShadowPages.getValue()) * unsafe.pageSize(); if (afterFrameInit) { disp -= frameSize; } @@ -112,7 +111,7 @@ emitStackOverflowCheck(tasm, false); } asm.decrementq(rsp, frameSize); - if (GraalOptions.ZapStackOnMethodEntry) { + if (ZapStackOnMethodEntry.getValue()) { final int intSize = 4; for (int i = 0; i < frameSize / intSize; ++i) { asm.movl(new AMD64Address(rsp, i * intSize), 0xC1C1C1C1); @@ -158,7 +157,7 @@ AMD64HotSpotLIRGenerator gen = (AMD64HotSpotLIRGenerator) lirGen; FrameMap frameMap = gen.frameMap; LIR lir = gen.lir; - boolean omitFrame = CanOmitFrame && !frameMap.frameNeedsAllocating() && !lir.hasArgInCallerFrame(); + boolean omitFrame = CanOmitFrame.getValue() && !frameMap.frameNeedsAllocating() && !lir.hasArgInCallerFrame(); Stub stub = gen.getStub(); AbstractAssembler masm = createAssembler(frameMap); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotRegisterConfig.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotRegisterConfig.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotRegisterConfig.java Tue Jun 04 17:33:14 2013 +0200 @@ -23,6 +23,7 @@ package com.oracle.graal.hotspot.amd64; import static com.oracle.graal.amd64.AMD64.*; +import static com.oracle.graal.phases.GraalOptions.*; import java.util.*; @@ -32,7 +33,6 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; -import com.oracle.graal.phases.*; public class AMD64HotSpotRegisterConfig implements RegisterConfig { @@ -95,8 +95,8 @@ }; // @formatter:on - if (GraalOptions.RegisterPressure != null) { - String[] names = GraalOptions.RegisterPressure.split(","); + if (RegisterPressure.getValue() != null) { + String[] names = RegisterPressure.getValue().split(","); Register[] regs = new Register[names.length]; for (int i = 0; i < names.length; i++) { regs[i] = findRegister(names[i], allocatable); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64SafepointOp.java --- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64SafepointOp.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64SafepointOp.java Tue Jun 04 17:33:14 2013 +0200 @@ -58,7 +58,7 @@ @Override public void emitCode(TargetMethodAssembler tasm, AMD64MacroAssembler asm) { int pos = asm.codeBuffer.position(); - int offset = SafepointPollOffset % unsafe.pageSize(); + int offset = SafepointPollOffset.getValue() % unsafe.pageSize(); RegisterValue scratch = (RegisterValue) temp; if (config.isPollingPageFar) { asm.movq(scratch.getRegister(), config.safepointPollingAddress + offset); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java --- a/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot.sparc/src/com/oracle/graal/hotspot/sparc/SPARCHotSpotBackend.java Tue Jun 04 17:33:14 2013 +0200 @@ -77,7 +77,7 @@ SPARCHotSpotLIRGenerator gen = (SPARCHotSpotLIRGenerator) lirGen; FrameMap frameMap = gen.frameMap; LIR lir = gen.lir; - boolean omitFrame = CanOmitFrame && !frameMap.frameNeedsAllocating() && !lir.hasArgInCallerFrame(); + boolean omitFrame = CanOmitFrame.getValue() && !frameMap.frameNeedsAllocating() && !lir.hasArgInCallerFrame(); Stub stub = gen.getStub(); AbstractAssembler masm = createAssembler(frameMap); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompilationTask.java Tue Jun 04 17:33:14 2013 +0200 @@ -24,6 +24,7 @@ import static com.oracle.graal.api.code.CodeUtil.*; import static com.oracle.graal.nodes.StructuredGraph.*; +import static com.oracle.graal.phases.GraalOptions.*; import java.lang.reflect.*; import java.util.concurrent.*; @@ -114,7 +115,7 @@ return; } inProgress = true; - if (GraalOptions.DynamicCompilePriority) { + if (DynamicCompilePriority.getValue()) { int threadPriority = priority < SlowQueueCutoff.getValue() ? Thread.NORM_PRIORITY : Thread.MIN_PRIORITY; if (Thread.currentThread().getPriority() != threadPriority) { Thread.currentThread().setPriority(threadPriority); @@ -139,17 +140,17 @@ public void runCompilation() { CompilationStatistics stats = CompilationStatistics.create(method, entryBCI != StructuredGraph.INVOCATION_ENTRY_BCI); try (TimerCloseable a = CompilationTime.start()) { - final boolean printCompilation = GraalOptions.PrintCompilation && !TTY.isSuppressed(); + final boolean printCompilation = PrintCompilation.getValue() && !TTY.isSuppressed(); if (printCompilation) { TTY.println(String.format("%-6d Graal %-70s %-45s %-50s %s...", id, method.getDeclaringClass().getName(), method.getName(), method.getSignature(), entryBCI == StructuredGraph.INVOCATION_ENTRY_BCI ? "" : "(OSR@" + entryBCI + ") ")); } - if (GraalOptions.HotSpotPrintCompilation) { + if (HotSpotPrintCompilation.getValue()) { printCompilation(); } CompilationResult result = null; - TTY.Filter filter = new TTY.Filter(GraalOptions.PrintFilter, method); + TTY.Filter filter = new TTY.Filter(PrintFilter.getValue(), method); long start = System.currentTimeMillis(); try { result = Debug.scope("Compiling", new DebugDumpScope(String.valueOf(id), true), new Callable() { @@ -182,19 +183,19 @@ installMethod(result); } catch (BailoutException bailout) { Debug.metric("Bailouts").increment(); - if (GraalOptions.ExitVMOnBailout) { + if (ExitVMOnBailout.getValue()) { TTY.cachedOut.println(MetaUtil.format("Bailout in %H.%n(%p)", method)); bailout.printStackTrace(TTY.cachedOut); System.exit(-1); - } else if (GraalOptions.PrintBailout) { + } else if (PrintBailout.getValue()) { TTY.cachedOut.println(MetaUtil.format("Bailout in %H.%n(%p)", method)); bailout.printStackTrace(TTY.cachedOut); } } catch (Throwable t) { - if (GraalOptions.PrintStackTraceOnException || GraalOptions.ExitVMOnException) { + if (PrintStackTraceOnException.getValue() || ExitVMOnException.getValue()) { t.printStackTrace(TTY.cachedOut); } - if (GraalOptions.ExitVMOnException) { + if (ExitVMOnException.getValue()) { System.exit(-1); } } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompileTheWorld.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompileTheWorld.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/CompileTheWorld.java Tue Jun 04 17:33:14 2013 +0200 @@ -23,6 +23,7 @@ package com.oracle.graal.hotspot; import static com.oracle.graal.hotspot.HotSpotGraalRuntime.*; +import static com.oracle.graal.phases.GraalOptions.*; import java.io.File; import java.lang.reflect.Constructor; @@ -75,7 +76,7 @@ * {@link GraalOptions#CompileTheWorldStopAt}. */ public CompileTheWorld() { - this(GraalOptions.CompileTheWorld, GraalOptions.CompileTheWorldStartAt, GraalOptions.CompileTheWorldStopAt); + this(CompileTheWorld.getValue(), CompileTheWorldStartAt.getValue(), CompileTheWorldStopAt.getValue()); } /** @@ -91,7 +92,7 @@ this.stopAt = stopAt; // We don't want the VM to exit when a method fails to compile. - GraalOptions.ExitVMOnException = false; + ExitVMOnException.setValue(false); } /** diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java Tue Jun 04 17:33:14 2013 +0200 @@ -23,6 +23,7 @@ package com.oracle.graal.hotspot; import static com.oracle.graal.graph.UnsafeAccess.*; +//import static com.oracle.graal.phases.GraalOptions.*; import java.lang.reflect.*; import java.util.*; @@ -159,16 +160,16 @@ // Set some global options: if (config.compileTheWorld) { - GraalOptions.CompileTheWorld = CompileTheWorld.SUN_BOOT_CLASS_PATH; + GraalOptions.CompileTheWorld.setValue(CompileTheWorld.SUN_BOOT_CLASS_PATH); } if (config.compileTheWorldStartAt != 1) { - GraalOptions.CompileTheWorldStartAt = config.compileTheWorldStartAt; + GraalOptions.CompileTheWorldStartAt.setValue(config.compileTheWorldStartAt); } if (config.compileTheWorldStopAt != Integer.MAX_VALUE) { - GraalOptions.CompileTheWorldStopAt = config.compileTheWorldStopAt; + GraalOptions.CompileTheWorldStopAt.setValue(config.compileTheWorldStopAt); } - GraalOptions.HotSpotPrintCompilation = config.printCompilation; - GraalOptions.HotSpotPrintInlining = config.printInlining; + GraalOptions.HotSpotPrintCompilation.setValue(config.printCompilation); + GraalOptions.HotSpotPrintInlining.setValue(config.printInlining); if (Boolean.valueOf(System.getProperty("graal.printconfig"))) { printConfig(config); @@ -186,8 +187,8 @@ replacements = new HotSpotReplacementsImpl(runtime, assumptions, runtime.getGraalRuntime().getTarget()); backend = createBackend(); - GraalOptions.StackShadowPages = config.stackShadowPages; - if (GraalOptions.CacheGraphs) { + GraalOptions.StackShadowPages.setValue(config.stackShadowPages); + if (GraalOptions.CacheGraphs.getValue()) { cache = new HotSpotGraphCache(); } } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotOptions.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotOptions.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotOptions.java Tue Jun 04 17:33:14 2013 +0200 @@ -23,12 +23,10 @@ package com.oracle.graal.hotspot; -import java.lang.reflect.*; import java.util.*; import com.oracle.graal.hotspot.logging.*; import com.oracle.graal.options.*; -import com.oracle.graal.phases.*; public class HotSpotOptions { @@ -76,7 +74,8 @@ OptionProvider optionProvider = options.get(fieldName); if (optionProvider == null) { - return setOptionLegacy(option, fieldName, value, valueString); + Logger.info("Could not find option " + fieldName + " (use -G:+PrintFlags to see Graal options)"); + return false; } Class optionType = optionProvider.getType(); @@ -119,66 +118,6 @@ return true; } - private static boolean setOptionLegacy(String option, String fieldName, Object v, String valueString) { - Object value = v; - Field f; - try { - f = GraalOptions.class.getDeclaredField(fieldName); - Class fType = f.getType(); - - if (value == null) { - if (fType == Boolean.TYPE) { - Logger.info("Value for boolean option '" + fieldName + "' must use '-G:+" + fieldName + "' or '-G:-" + fieldName + "' format"); - return false; - } - - if (valueString == null) { - Logger.info("Value for option '" + fieldName + "' must use '-G:" + fieldName + "=' format"); - return false; - } - - if (fType == Float.TYPE) { - value = Float.parseFloat(valueString); - } else if (fType == Double.TYPE) { - value = Double.parseDouble(valueString); - } else if (fType == Integer.TYPE) { - value = Integer.parseInt(valueString); - } else if (fType == String.class) { - value = valueString; - } - } else { - if (fType != Boolean.TYPE) { - Logger.info("Value for option '" + fieldName + "' must use '-G:" + fieldName + "=' format"); - return false; - } - } - - if (value != null) { - f.setAccessible(true); - f.set(null, value); - // Logger.info("Set option " + fieldName + " to " + value); - } else { - Logger.info("Wrong value \"" + valueString + "\" for option " + fieldName); - return false; - } - } catch (SecurityException e) { - Logger.info("Security exception when setting option " + option); - return false; - } catch (NoSuchFieldException e) { - Logger.info("Could not find option " + fieldName + " (use -G:+PrintFlags to see Graal options)"); - return false; - } catch (IllegalArgumentException e) { - Logger.info("Illegal value for option " + option); - return false; - } catch (IllegalAccessException e) { - Logger.info("Illegal access exception when setting option " + option); - return false; - } - - return true; - - } - private static void printFlags() { Logger.info("[Graal flags]"); SortedMap sortedOptions = new TreeMap<>(options); @@ -189,28 +128,6 @@ Logger.info(String.format("%9s %-40s = %-14s %s", opt.getType().getSimpleName(), e.getKey(), value, opt.getHelp())); } - printFlagsLegacy(); - System.exit(0); } - - protected static void printFlagsLegacy() { - Field[] flags = GraalOptions.class.getDeclaredFields(); - Arrays.sort(flags, new Comparator() { - - public int compare(Field o1, Field o2) { - return o1.getName().compareTo(o2.getName()); - } - }); - for (Field f : flags) { - if (Modifier.isPublic(f.getModifiers()) && Modifier.isStatic(f.getModifiers())) { - f.setAccessible(true); - try { - Object value = f.get(null); - Logger.info(String.format("%9s %-40s = %s", f.getType().getSimpleName(), f.getName(), value)); - } catch (Exception e) { - } - } - } - } } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/VMToCompilerImpl.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/VMToCompilerImpl.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/bridge/VMToCompilerImpl.java Tue Jun 04 17:33:14 2013 +0200 @@ -28,6 +28,7 @@ import static com.oracle.graal.hotspot.CompilationTask.*; import static com.oracle.graal.hotspot.HotSpotGraalRuntime.*; import static com.oracle.graal.java.GraphBuilderPhase.*; +import static com.oracle.graal.phases.GraalOptions.*; import java.io.*; import java.lang.reflect.*; @@ -181,7 +182,7 @@ // Install intrinsics. final HotSpotRuntime runtime = graalRuntime.getCapability(HotSpotRuntime.class); final Replacements replacements = graalRuntime.getCapability(Replacements.class); - if (GraalOptions.Intrinsify) { + if (Intrinsify.getValue()) { Debug.scope("RegisterReplacements", new Object[]{new DebugDumpScope("RegisterReplacements")}, new Runnable() { @Override @@ -191,7 +192,7 @@ provider.registerReplacements(runtime, replacements, runtime.getTarget()); } runtime.registerReplacements(replacements); - if (GraalOptions.BootstrapReplacements) { + if (BootstrapReplacements.getValue()) { for (ResolvedJavaMethod method : replacements.getAllReplacements()) { replacements.getMacroSubstitution(method); replacements.getMethodSubstitution(method); @@ -421,7 +422,7 @@ System.gc(); phaseTransition("bootstrap2"); - if (GraalOptions.CompileTheWorld != null) { + if (CompileTheWorld.getValue() != null) { new CompileTheWorld().compile(); System.exit(0); } @@ -768,7 +769,7 @@ phasePlan.addPhase(PhasePosition.AFTER_PARSING, new OnStackReplacementPhase()); } phasePlan.addPhase(PhasePosition.LOW_LEVEL, new WriteBarrierAdditionPhase()); - if (GraalOptions.VerifyPhases) { + if (VerifyPhases.getValue()) { phasePlan.addPhase(PhasePosition.LOW_LEVEL, new WriteBarrierVerificationPhase()); } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphCache.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphCache.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotGraphCache.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.hotspot.meta; +import static com.oracle.graal.phases.GraalOptions.*; + import java.io.*; import java.lang.ref.*; import java.util.*; @@ -30,7 +32,6 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; -import com.oracle.graal.phases.*; /** * This class implements the graph caching system for the HotSpot platform. @@ -73,12 +74,12 @@ private static final long serialVersionUID = -3973307040793397840L; public LRUCache() { - super(GraalOptions.GraphCacheSize * 2, 0.75f, false); + super(GraphCacheSize.getValue() * 2, 0.75f, false); } @Override protected boolean removeEldestEntry(Entry> eldest) { - if (size() > GraalOptions.GraphCacheSize) { + if (size() > GraphCacheSize.getValue()) { ResolvedJavaMethod method = eldest.getValue().get(); if (method != null) { StructuredGraph cachedGraph = (StructuredGraph) method.getCompilerStorage().get(HotSpotGraphCache.this); @@ -96,7 +97,7 @@ private final Map> cachedGraphIds = Collections.synchronizedMap(new LRUCache()); public HotSpotGraphCache() { - if (GraalOptions.PrintGraphCache) { + if (PrintGraphCache.getValue()) { Runtime.getRuntime().addShutdownHook(new Thread() { @Override @@ -115,7 +116,7 @@ public StructuredGraph get(ResolvedJavaMethod method) { StructuredGraph result = (StructuredGraph) method.getCompilerStorage().get(this); - if (GraalOptions.PrintGraphCache) { + if (PrintGraphCache.getValue()) { if (result == null) { missCounter++; } else { @@ -131,7 +132,7 @@ cachedGraphIds.put(graph.graphId(), new WeakReference<>(graph.method())); graph.method().getCompilerStorage().put(this, graph); - if (GraalOptions.PrintGraphCache) { + if (PrintGraphCache.getValue()) { putCounter++; } } @@ -161,12 +162,12 @@ StructuredGraph cachedGraph = (StructuredGraph) method.getCompilerStorage().get(this); if (cachedGraph != null && cachedGraph.graphId() == graphId) { method.getCompilerStorage().remove(this); - if (GraalOptions.PrintGraphCache) { + if (PrintGraphCache.getValue()) { removeHitCounter++; } } } - if (GraalOptions.PrintGraphCache) { + if (PrintGraphCache.getValue()) { removeCounter++; } } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodData.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodData.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotMethodData.java Tue Jun 04 17:33:14 2013 +0200 @@ -24,6 +24,7 @@ import static com.oracle.graal.graph.UnsafeAccess.*; import static com.oracle.graal.hotspot.HotSpotGraalRuntime.*; +import static com.oracle.graal.phases.GraalOptions.*; import java.util.*; @@ -32,7 +33,6 @@ import com.oracle.graal.api.meta.JavaTypeProfile.ProfiledType; import com.oracle.graal.api.meta.ProfilingInfo.TriState; import com.oracle.graal.hotspot.*; -import com.oracle.graal.phases.*; /** * Access to a HotSpot MethodData structure (defined in methodData.hpp). @@ -376,7 +376,7 @@ protected abstract long getTypesNotRecordedExecutionCount(HotSpotMethodData data, int position); private static JavaTypeProfile createTypeProfile(TriState nullSeen, ResolvedJavaType[] types, long[] counts, long totalCount, int entries) { - if (entries <= 0 || totalCount < GraalOptions.MatureExecutionsTypeProfile) { + if (entries <= 0 || totalCount < MatureExecutionsTypeProfile.getValue()) { return null; } @@ -484,7 +484,7 @@ } private static JavaMethodProfile createMethodProfile(ResolvedJavaMethod[] methods, long[] counts, long totalCount, int entries) { - if (entries <= 0 || totalCount < GraalOptions.MatureExecutionsTypeProfile) { + if (entries <= 0 || totalCount < MatureExecutionsTypeProfile.getValue()) { return null; } @@ -540,7 +540,7 @@ long notTakenCount = data.readUnsignedInt(position, NOT_TAKEN_COUNT_OFFSET); long total = takenCount + notTakenCount; - if (total < GraalOptions.MatureExecutionsBranch) { + if (total < MatureExecutionsBranch.getValue()) { return -1; } else { return takenCount / (double) total; @@ -607,7 +607,7 @@ result[i - 1] = count; } - if (totalCount < GraalOptions.MatureExecutionsPerSwitchCase * length) { + if (totalCount < MatureExecutionsPerSwitchCase.getValue() * length) { return null; } else { for (int i = 0; i < length; i++) { diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaField.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaField.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaField.java Tue Jun 04 17:33:14 2013 +0200 @@ -31,7 +31,7 @@ import com.oracle.graal.api.meta.*; import com.oracle.graal.hotspot.*; -import com.oracle.graal.phases.*; +import com.oracle.graal.options.*; import com.oracle.graal.replacements.*; /** @@ -83,7 +83,7 @@ assert Modifier.isStatic(flags); if (constant == null) { if (holder.isInitialized() && !holder.getName().equals(SystemClassName)) { - if (Modifier.isFinal(getModifiers()) || assumeStaticFieldsFinal(holder.mirror())) { + if (Modifier.isFinal(getModifiers())) { constant = readValue(receiver); } } @@ -119,11 +119,10 @@ } } - private static boolean assumeStaticFieldsFinal(Class clazz) { - return clazz == GraalOptions.class; - } - private static boolean assumeNonStaticFinalFieldsAsFinal(Class clazz) { + if (clazz == OptionValue.class) { + return true; + } return clazz == SnippetCounter.class; } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedJavaMethod.java Tue Jun 04 17:33:14 2013 +0200 @@ -25,6 +25,7 @@ import static com.oracle.graal.api.meta.MetaUtil.*; import static com.oracle.graal.graph.UnsafeAccess.*; import static com.oracle.graal.hotspot.HotSpotGraalRuntime.*; +import static com.oracle.graal.phases.GraalOptions.*; import java.lang.annotation.*; import java.lang.reflect.*; @@ -37,7 +38,6 @@ import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.*; import com.oracle.graal.hotspot.debug.*; -import com.oracle.graal.phases.*; /** * Implementation of {@link JavaMethod} for resolved HotSpot methods. @@ -276,7 +276,7 @@ public ProfilingInfo getProfilingInfo() { ProfilingInfo info; - if (GraalOptions.UseProfilingInformation && methodData == null) { + if (UseProfilingInformation.getValue() && methodData == null) { long metaspaceMethodData = unsafeReadWord(metaspaceMethod + graalRuntime().getConfig().methodDataOffset); if (metaspaceMethodData != 0) { methodData = new HotSpotMethodData(metaspaceMethodData); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java Tue Jun 04 17:33:14 2013 +0200 @@ -50,6 +50,7 @@ import static com.oracle.graal.hotspot.stubs.UnwindExceptionToCallerStub.*; import static com.oracle.graal.java.GraphBuilderPhase.RuntimeCalls.*; import static com.oracle.graal.nodes.java.RegisterFinalizerNode.*; +import static com.oracle.graal.phases.GraalOptions.*; import static com.oracle.graal.replacements.Log.*; import static com.oracle.graal.replacements.MathSubstitutionsX86.*; @@ -84,7 +85,6 @@ import com.oracle.graal.nodes.spi.*; import com.oracle.graal.nodes.type.*; import com.oracle.graal.nodes.virtual.*; -import com.oracle.graal.phases.*; import com.oracle.graal.printer.*; import com.oracle.graal.replacements.*; import com.oracle.graal.word.*; @@ -294,26 +294,26 @@ linkForeignCall(r, VM_ERROR, c.vmErrorAddress, PREPEND_THREAD, REEXECUTABLE, NO_LOCATIONS); linkForeignCall(r, OSR_MIGRATION_END, c.osrMigrationEndAddress, DONT_PREPEND_THREAD, NOT_REEXECUTABLE, NO_LOCATIONS); - if (GraalOptions.IntrinsifyObjectMethods) { + if (IntrinsifyObjectMethods.getValue()) { r.registerSubstitutions(ObjectSubstitutions.class); } - if (GraalOptions.IntrinsifySystemMethods) { + if (IntrinsifySystemMethods.getValue()) { r.registerSubstitutions(SystemSubstitutions.class); } - if (GraalOptions.IntrinsifyThreadMethods) { + if (IntrinsifyThreadMethods.getValue()) { r.registerSubstitutions(ThreadSubstitutions.class); } - if (GraalOptions.IntrinsifyUnsafeMethods) { + if (IntrinsifyUnsafeMethods.getValue()) { r.registerSubstitutions(UnsafeSubstitutions.class); } - if (GraalOptions.IntrinsifyClassMethods) { + if (IntrinsifyClassMethods.getValue()) { r.registerSubstitutions(ClassSubstitutions.class); } - if (GraalOptions.IntrinsifyAESMethods) { + if (IntrinsifyAESMethods.getValue()) { r.registerSubstitutions(AESCryptSubstitutions.class); r.registerSubstitutions(CipherBlockChainingSubstitutions.class); } - if (GraalOptions.IntrinsifyReflectionMethods) { + if (IntrinsifyReflectionMethods.getValue()) { r.registerSubstitutions(ReflectionSubstitutions.class); } @@ -492,7 +492,7 @@ JavaType[] signature = MetaUtil.signatureToTypes(callTarget.targetMethod().getSignature(), callTarget.isStatic() ? null : callTarget.targetMethod().getDeclaringClass()); LoweredCallTargetNode loweredCallTarget = null; - if (callTarget.invokeKind() == InvokeKind.Virtual && GraalOptions.InlineVTableStubs && (GraalOptions.AlwaysInlineVTableStubs || invoke.isPolymorphic())) { + if (callTarget.invokeKind() == InvokeKind.Virtual && InlineVTableStubs.getValue() && (AlwaysInlineVTableStubs.getValue() || invoke.isPolymorphic())) { HotSpotResolvedJavaMethod hsMethod = (HotSpotResolvedJavaMethod) callTarget.targetMethod(); if (!hsMethod.getDeclaringClass().isInterface()) { diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopyNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopyNode.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopyNode.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.hotspot.replacements; +import static com.oracle.graal.phases.GraalOptions.*; + import com.oracle.graal.api.meta.*; import com.oracle.graal.debug.*; import com.oracle.graal.graph.Node.IterableNodeType; @@ -29,7 +31,6 @@ import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; import com.oracle.graal.nodes.virtual.*; -import com.oracle.graal.phases.*; import com.oracle.graal.phases.common.*; import com.oracle.graal.phases.tiers.*; import com.oracle.graal.replacements.nodes.*; @@ -90,7 +91,7 @@ @Override protected StructuredGraph getSnippetGraph(LoweringTool tool) { - if (!GraalOptions.IntrinsifyArrayCopy) { + if (!IntrinsifyArrayCopy.getValue()) { return null; } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopySnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopySnippets.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ArrayCopySnippets.java Tue Jun 04 17:33:14 2013 +0200 @@ -24,6 +24,7 @@ import static com.oracle.graal.api.meta.LocationIdentity.*; import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; +import static com.oracle.graal.phases.GraalOptions.*; import static com.oracle.graal.replacements.nodes.BranchProbabilityNode.*; import java.lang.reflect.*; @@ -314,12 +315,12 @@ } } - private static final SnippetCounter.Group checkCounters = GraalOptions.SnippetCounters ? new SnippetCounter.Group("System.arraycopy checkInputs") : null; + private static final SnippetCounter.Group checkCounters = SnippetCounters.getValue() ? new SnippetCounter.Group("System.arraycopy checkInputs") : null; private static final SnippetCounter checkSuccessCounter = new SnippetCounter(checkCounters, "checkSuccess", "checkSuccess"); private static final SnippetCounter checkNPECounter = new SnippetCounter(checkCounters, "checkNPE", "checkNPE"); private static final SnippetCounter checkAIOOBECounter = new SnippetCounter(checkCounters, "checkAIOOBE", "checkAIOOBE"); - private static final SnippetCounter.Group counters = GraalOptions.SnippetCounters ? new SnippetCounter.Group("System.arraycopy") : null; + private static final SnippetCounter.Group counters = SnippetCounters.getValue() ? new SnippetCounter.Group("System.arraycopy") : null; private static final SnippetCounter byteCounter = new SnippetCounter(counters, "byte[]", "arraycopy for byte[] arrays"); private static final SnippetCounter charCounter = new SnippetCounter(counters, "char[]", "arraycopy for char[] arrays"); private static final SnippetCounter shortCounter = new SnippetCounter(counters, "short[]", "arraycopy for short[] arrays"); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteSubstitutions.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteSubstitutions.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CallSiteSubstitutions.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.hotspot.replacements; +import static com.oracle.graal.phases.GraalOptions.*; + import java.lang.invoke.*; import com.oracle.graal.api.code.*; @@ -29,14 +31,13 @@ import com.oracle.graal.api.replacements.*; import com.oracle.graal.api.runtime.*; import com.oracle.graal.nodes.spi.*; -import com.oracle.graal.phases.*; @ServiceProvider(ReplacementsProvider.class) public class CallSiteSubstitutions implements ReplacementsProvider { @Override public void registerReplacements(MetaAccessProvider runtime, Replacements replacements, TargetDescription target) { - if (GraalOptions.IntrinsifyCallSiteTarget) { + if (IntrinsifyCallSiteTarget.getValue()) { replacements.registerSubstitutions(ConstantCallSiteSubstitutions.class); replacements.registerSubstitutions(MutableCallSiteSubstitutions.class); replacements.registerSubstitutions(VolatileCallSiteSubstitutions.class); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CheckCastSnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CheckCastSnippets.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/CheckCastSnippets.java Tue Jun 04 17:33:14 2013 +0200 @@ -27,6 +27,7 @@ import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.hotspot.replacements.TypeCheckSnippetUtils.*; import static com.oracle.graal.nodes.extended.UnsafeCastNode.*; +import static com.oracle.graal.phases.GraalOptions.*; import static com.oracle.graal.replacements.SnippetTemplate.*; import static com.oracle.graal.replacements.nodes.BranchProbabilityNode.*; @@ -39,7 +40,6 @@ import com.oracle.graal.nodes.java.*; import com.oracle.graal.nodes.spi.*; import com.oracle.graal.nodes.type.*; -import com.oracle.graal.phases.*; import com.oracle.graal.replacements.*; import com.oracle.graal.replacements.Snippet.ConstantParameter; import com.oracle.graal.replacements.Snippet.VarargsParameter; @@ -168,7 +168,7 @@ StructuredGraph graph = checkcast.graph(); ValueNode object = checkcast.object(); HotSpotResolvedObjectType type = (HotSpotResolvedObjectType) checkcast.type(); - TypeCheckHints hintInfo = new TypeCheckHints(checkcast.type(), checkcast.profile(), tool.assumptions(), GraalOptions.CheckcastMinHintHitProbability, GraalOptions.CheckcastMaxHints); + TypeCheckHints hintInfo = new TypeCheckHints(checkcast.type(), checkcast.profile(), tool.assumptions(), CheckcastMinHintHitProbability.getValue(), CheckcastMaxHints.getValue()); ValueNode hub = ConstantNode.forConstant(type.klass(), runtime, checkcast.graph()); Arguments args; diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNmethodIntrinsics.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNmethodIntrinsics.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotNmethodIntrinsics.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,18 +22,19 @@ */ package com.oracle.graal.hotspot.replacements; +import static com.oracle.graal.phases.GraalOptions.*; + import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.api.runtime.*; import com.oracle.graal.nodes.spi.*; -import com.oracle.graal.phases.*; @ServiceProvider(ReplacementsProvider.class) public class HotSpotNmethodIntrinsics implements ReplacementsProvider { @Override public void registerReplacements(MetaAccessProvider runtime, Replacements replacements, TargetDescription target) { - if (GraalOptions.IntrinsifyInstalledCodeMethods) { + if (IntrinsifyInstalledCodeMethods.getValue()) { replacements.registerSubstitutions(HotSpotNmethodSubstitutions.class); } } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/InstanceOfSnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/InstanceOfSnippets.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/InstanceOfSnippets.java Tue Jun 04 17:33:14 2013 +0200 @@ -24,6 +24,7 @@ import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.hotspot.replacements.TypeCheckSnippetUtils.*; +import static com.oracle.graal.phases.GraalOptions.*; import static com.oracle.graal.replacements.nodes.BranchProbabilityNode.*; import com.oracle.graal.api.code.*; @@ -34,7 +35,6 @@ import com.oracle.graal.nodes.java.*; import com.oracle.graal.nodes.spi.*; import com.oracle.graal.nodes.type.*; -import com.oracle.graal.phases.*; import com.oracle.graal.replacements.*; import com.oracle.graal.replacements.Snippet.ConstantParameter; import com.oracle.graal.replacements.Snippet.VarargsParameter; @@ -150,7 +150,7 @@ if (replacer.instanceOf instanceof InstanceOfNode) { InstanceOfNode instanceOf = (InstanceOfNode) replacer.instanceOf; ValueNode object = instanceOf.object(); - TypeCheckHints hintInfo = new TypeCheckHints(instanceOf.type(), instanceOf.profile(), tool.assumptions(), GraalOptions.InstanceOfMinHintHitProbability, GraalOptions.InstanceOfMaxHints); + TypeCheckHints hintInfo = new TypeCheckHints(instanceOf.type(), instanceOf.profile(), tool.assumptions(), InstanceOfMinHintHitProbability.getValue(), InstanceOfMaxHints.getValue()); final HotSpotResolvedObjectType type = (HotSpotResolvedObjectType) instanceOf.type(); ConstantNode hub = ConstantNode.forConstant(type.klass(), runtime, instanceOf.graph()); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/NewObjectSnippets.java Tue Jun 04 17:33:14 2013 +0200 @@ -27,6 +27,7 @@ import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; import static com.oracle.graal.nodes.extended.UnsafeArrayCastNode.*; import static com.oracle.graal.nodes.extended.UnsafeCastNode.*; +import static com.oracle.graal.phases.GraalOptions.*; import static com.oracle.graal.replacements.SnippetTemplate.*; import static com.oracle.graal.replacements.nodes.BranchProbabilityNode.*; import static com.oracle.graal.replacements.nodes.ExplodeLoopNode.*; @@ -40,7 +41,6 @@ import com.oracle.graal.nodes.java.*; import com.oracle.graal.nodes.spi.*; import com.oracle.graal.nodes.type.*; -import com.oracle.graal.phases.*; import com.oracle.graal.replacements.*; import com.oracle.graal.replacements.Snippet.ConstantParameter; import com.oracle.graal.replacements.Snippet.VarargsParameter; @@ -278,12 +278,12 @@ } } - private static final SnippetCounter.Group countersNew = GraalOptions.SnippetCounters ? new SnippetCounter.Group("NewInstance") : null; + private static final SnippetCounter.Group countersNew = SnippetCounters.getValue() ? new SnippetCounter.Group("NewInstance") : null; private static final SnippetCounter new_seqInit = new SnippetCounter(countersNew, "tlabSeqInit", "TLAB alloc with unrolled zeroing"); private static final SnippetCounter new_loopInit = new SnippetCounter(countersNew, "tlabLoopInit", "TLAB alloc with zeroing in a loop"); private static final SnippetCounter new_stub = new SnippetCounter(countersNew, "stub", "alloc and zeroing via stub"); - private static final SnippetCounter.Group countersNewArray = GraalOptions.SnippetCounters ? new SnippetCounter.Group("NewArray") : null; + private static final SnippetCounter.Group countersNewArray = SnippetCounters.getValue() ? new SnippetCounter.Group("NewArray") : null; private static final SnippetCounter newarray_loopInit = new SnippetCounter(countersNewArray, "tlabLoopInit", "TLAB alloc with zeroing in a loop"); private static final SnippetCounter newarray_stub = new SnippetCounter(countersNewArray, "stub", "alloc and zeroing via stub"); } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneNode.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.hotspot.replacements; +import static com.oracle.graal.phases.GraalOptions.*; + import java.lang.reflect.*; import com.oracle.graal.api.code.*; @@ -31,7 +33,6 @@ import com.oracle.graal.nodes.spi.*; import com.oracle.graal.nodes.type.*; import com.oracle.graal.nodes.virtual.*; -import com.oracle.graal.phases.*; import com.oracle.graal.replacements.nodes.*; public class ObjectCloneNode extends MacroNode implements VirtualizableAllocation, ArrayLengthProvider { @@ -51,7 +52,7 @@ @Override protected StructuredGraph getSnippetGraph(LoweringTool tool) { - if (!GraalOptions.IntrinsifyObjectClone) { + if (!IntrinsifyObjectClone.getValue()) { return null; } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneSnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneSnippets.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ObjectCloneSnippets.java Tue Jun 04 17:33:14 2013 +0200 @@ -24,6 +24,7 @@ import static com.oracle.graal.api.meta.LocationIdentity.*; import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; +import static com.oracle.graal.phases.GraalOptions.*; import static com.oracle.graal.replacements.nodes.BranchProbabilityNode.*; import java.lang.reflect.*; @@ -33,7 +34,6 @@ import com.oracle.graal.graph.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.java.*; -import com.oracle.graal.phases.*; import com.oracle.graal.replacements.*; import com.oracle.graal.word.*; @@ -117,12 +117,12 @@ } } - private static final SnippetCounter.Group cloneCounters = GraalOptions.SnippetCounters ? new SnippetCounter.Group("Object.clone") : null; + private static final SnippetCounter.Group cloneCounters = SnippetCounters.getValue() ? new SnippetCounter.Group("Object.clone") : null; private static final SnippetCounter instanceCloneCounter = new SnippetCounter(cloneCounters, "instanceClone", "clone snippet for instances"); private static final SnippetCounter arrayCloneCounter = new SnippetCounter(cloneCounters, "arrayClone", "clone snippet for arrays"); private static final SnippetCounter genericCloneCounter = new SnippetCounter(cloneCounters, "genericClone", "clone snippet for arrays and instances"); - private static final SnippetCounter.Group genericCloneCounters = GraalOptions.SnippetCounters ? new SnippetCounter.Group("Object.clone generic snippet") : null; + private static final SnippetCounter.Group genericCloneCounters = SnippetCounters.getValue() ? new SnippetCounter.Group("Object.clone generic snippet") : null; private static final SnippetCounter genericInstanceCloneCounter = new SnippetCounter(genericCloneCounters, "genericInstanceClone", "generic clone implementation took instance path"); private static final SnippetCounter genericArrayCloneCounter = new SnippetCounter(genericCloneCounters, "genericArrayClone", "generic clone implementation took array path"); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionGetCallerClassNode.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionGetCallerClassNode.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/ReflectionGetCallerClassNode.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,12 +22,13 @@ */ package com.oracle.graal.hotspot.replacements; +import static com.oracle.graal.phases.GraalOptions.*; + import com.oracle.graal.api.meta.*; import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.meta.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.spi.*; -import com.oracle.graal.phases.*; import com.oracle.graal.replacements.nodes.*; public class ReflectionGetCallerClassNode extends MacroNode implements Canonicalizable, Lowerable { @@ -64,7 +65,7 @@ * @return ConstantNode of the caller class, or null */ private ConstantNode getCallerClassNode(MetaAccessProvider runtime) { - if (!GraalOptions.IntrinsifyReflectionMethods) { + if (!IntrinsifyReflectionMethods.getValue()) { return null; } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/TypeCheckSnippetUtils.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/TypeCheckSnippetUtils.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/TypeCheckSnippetUtils.java Tue Jun 04 17:33:14 2013 +0200 @@ -23,6 +23,7 @@ package com.oracle.graal.hotspot.replacements; import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; +import static com.oracle.graal.phases.GraalOptions.*; import static com.oracle.graal.replacements.nodes.BranchProbabilityNode.*; import java.util.*; @@ -32,7 +33,6 @@ import com.oracle.graal.graph.*; import com.oracle.graal.hotspot.meta.*; import com.oracle.graal.nodes.*; -import com.oracle.graal.phases.*; import com.oracle.graal.replacements.*; import com.oracle.graal.word.*; @@ -145,7 +145,7 @@ return metaspaceArray.readWord(metaspaceArrayBaseOffset() + index * wordSize(), LocationIdentity.FINAL_LOCATION); } - private static final SnippetCounter.Group counters = GraalOptions.SnippetCounters ? new SnippetCounter.Group("TypeCheck") : null; + private static final SnippetCounter.Group counters = SnippetCounters.getValue() ? new SnippetCounter.Group("TypeCheck") : null; static final SnippetCounter hintsHit = new SnippetCounter(counters, "hintsHit", "hit a hint type"); static final SnippetCounter exactHit = new SnippetCounter(counters, "exactHit", "exact type test succeeded"); static final SnippetCounter exactMiss = new SnippetCounter(counters, "exactMiss", "exact type test failed"); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.java/src/com/oracle/graal/java/BciBlockMapping.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/BciBlockMapping.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/BciBlockMapping.java Tue Jun 04 17:33:14 2013 +0200 @@ -23,6 +23,7 @@ package com.oracle.graal.java; import static com.oracle.graal.bytecode.Bytecodes.*; +import static com.oracle.graal.phases.GraalOptions.*; import java.util.*; @@ -31,7 +32,6 @@ import com.oracle.graal.bytecode.*; import com.oracle.graal.debug.*; import com.oracle.graal.nodes.*; -import com.oracle.graal.phases.*; /** * Builds a mapping between bytecodes and basic blocks and builds a conservative control flow graph @@ -187,7 +187,7 @@ makeExceptionEntries(); iterateOverBytecodes(); if (hasJsrBytecodes) { - if (!GraalOptions.SupportJsrBytecodes) { + if (!SupportJsrBytecodes.getValue()) { throw new JsrNotSupportedBailout("jsr/ret parsing disabled"); } createJsrAlternatives(blockMap[0]); @@ -209,7 +209,7 @@ if (Debug.isLogEnabled()) { this.log("Before LivenessAnalysis"); } - if (GraalOptions.OptLivenessAnalysis) { + if (OptLivenessAnalysis.getValue()) { Debug.scope("LivenessAnalysis", new Runnable() { @Override diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java --- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Tue Jun 04 17:33:14 2013 +0200 @@ -27,6 +27,7 @@ import static com.oracle.graal.api.meta.DeoptimizationReason.*; import static com.oracle.graal.bytecode.Bytecodes.*; import static com.oracle.graal.java.GraphBuilderPhase.RuntimeCalls.*; +import static com.oracle.graal.phases.GraalOptions.*; import static java.lang.reflect.Modifier.*; import java.lang.reflect.*; @@ -158,7 +159,7 @@ methodSynchronizedObject = null; this.currentGraph = graph; this.frameState = new FrameStateBuilder(method, graph, graphBuilderConfig.eagerResolving()); - TTY.Filter filter = new TTY.Filter(GraalOptions.PrintFilter, method); + TTY.Filter filter = new TTY.Filter(PrintFilter.getValue(), method); try { build(); } finally { @@ -182,7 +183,7 @@ } private void build() { - if (GraalOptions.PrintProfilingInformation) { + if (PrintProfilingInformation.getValue()) { TTY.println("Profiling info for " + method); TTY.println(MetaUtil.indent(MetaUtil.profileToString(profilingInfo, method, CodeUtil.NEW_LINE), " ")); } @@ -921,7 +922,7 @@ append(new IfNode(currentGraph.unique(new IsNullNode(receiver)), trueSucc, falseSucc, 0.1)); lastInstr = falseSucc; - if (GraalOptions.OmitHotExceptionStacktrace) { + if (OmitHotExceptionStacktrace.getValue()) { ValueNode exception = ConstantNode.forObject(cachedNullPointerException, runtime, currentGraph); trueSucc.setNext(handleException(exception, bci())); } else { @@ -945,7 +946,7 @@ append(new IfNode(currentGraph.unique(new IntegerBelowThanNode(index, length)), trueSucc, falseSucc, 0.9)); lastInstr = trueSucc; - if (GraalOptions.OmitHotExceptionStacktrace) { + if (OmitHotExceptionStacktrace.getValue()) { ValueNode exception = ConstantNode.forObject(cachedArrayIndexOutOfBoundsException, runtime, currentGraph); falseSucc.setNext(handleException(exception, bci())); } else { @@ -1023,7 +1024,7 @@ if (target instanceof ResolvedJavaMethod) { ResolvedJavaMethod resolvedTarget = (ResolvedJavaMethod) target; ResolvedJavaType holder = resolvedTarget.getDeclaringClass(); - if (!holder.isInitialized() && GraalOptions.ResolveClassBeforeStaticInvoke) { + if (!holder.isInitialized() && ResolveClassBeforeStaticInvoke.getValue()) { handleUnresolvedInvoke(target, InvokeKind.Static); } else { ValueNode[] args = frameState.popArguments(resolvedTarget.getSignature().getParameterSlots(false), resolvedTarget.getSignature().getParameterCount(false)); @@ -1123,7 +1124,7 @@ private void appendInvoke(InvokeKind invokeKind, ResolvedJavaMethod targetMethod, ValueNode[] args) { Kind resultType = targetMethod.getSignature().getReturnKind(); - if (GraalOptions.DeoptALot) { + if (DeoptALot.getValue()) { append(new DeoptimizeNode(DeoptimizationAction.None, RuntimeConstraint)); frameState.pushReturn(resultType, ConstantNode.defaultForKind(resultType, currentGraph)); return; @@ -1766,7 +1767,7 @@ } private void traceState() { - if (GraalOptions.TraceBytecodeParserLevel >= TRACELEVEL_STATE && Debug.isLogEnabled()) { + if (TraceBytecodeParserLevel.getValue() >= TRACELEVEL_STATE && Debug.isLogEnabled()) { Debug.log(String.format("| state [nr locals = %d, stack depth = %d, method = %s]", frameState.localsSize(), frameState.stackSize(), method)); for (int i = 0; i < frameState.localsSize(); ++i) { ValueNode value = frameState.localAt(i); @@ -1996,7 +1997,7 @@ } private void traceInstruction(int bci, int opcode, boolean blockStart) { - if (GraalOptions.TraceBytecodeParserLevel >= TRACELEVEL_INSTRUCTIONS && Debug.isLogEnabled()) { + if (TraceBytecodeParserLevel.getValue() >= TRACELEVEL_INSTRUCTIONS && Debug.isLogEnabled()) { StringBuilder sb = new StringBuilder(40); sb.append(blockStart ? '+' : '|'); if (bci < 10) { diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopPolicies.java --- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopPolicies.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopPolicies.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,12 +22,13 @@ */ package com.oracle.graal.loop; +import static com.oracle.graal.phases.GraalOptions.*; + import com.oracle.graal.debug.*; import com.oracle.graal.graph.*; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.cfg.*; import com.oracle.graal.nodes.util.*; -import com.oracle.graal.phases.*; public abstract class LoopPolicies { @@ -39,7 +40,7 @@ public static boolean shouldPeel(LoopEx loop, NodesToDoubles probabilities) { LoopBeginNode loopBegin = loop.loopBegin(); double entryProbability = probabilities.get(loopBegin.forwardEnd()); - return entryProbability > GraalOptions.MinimumPeelProbability && loop.size() + loopBegin.graph().getNodeCount() < GraalOptions.MaximumDesiredSize; + return entryProbability > MinimumPeelProbability.getValue() && loop.size() + loopBegin.graph().getNodeCount() < MaximumDesiredSize.getValue(); } public static boolean shouldFullUnroll(LoopEx loop) { @@ -48,14 +49,14 @@ } CountedLoopInfo counted = loop.counted(); long exactTrips = counted.constantMaxTripCount(); - int maxNodes = (counted.isExactTripCount() && counted.isConstantExactTripCount()) ? GraalOptions.ExactFullUnrollMaxNodes : GraalOptions.FullUnrollMaxNodes; - maxNodes = Math.min(maxNodes, GraalOptions.MaximumDesiredSize - loop.loopBegin().graph().getNodeCount()); + int maxNodes = (counted.isExactTripCount() && counted.isConstantExactTripCount()) ? ExactFullUnrollMaxNodes.getValue() : FullUnrollMaxNodes.getValue(); + maxNodes = Math.min(maxNodes, MaximumDesiredSize.getValue() - loop.loopBegin().graph().getNodeCount()); int size = Math.max(1, loop.size() - 1 - loop.loopBegin().phis().count()); return size * exactTrips <= maxNodes; } public static boolean shouldTryUnswitch(LoopEx loop) { - return loop.loopBegin().unswitches() <= GraalOptions.LoopMaxUnswitch; + return loop.loopBegin().unswitches() <= LoopMaxUnswitch.getValue(); } public static boolean shouldUnswitch(LoopEx loop, ControlSplitNode controlSplit) { @@ -77,7 +78,7 @@ } int netDiff = loopTotal - (inBranchTotal); double uncertainty = 1 - maxProbability; - int maxDiff = GraalOptions.LoopUnswitchMaxIncrease + (int) (GraalOptions.LoopUnswitchUncertaintyBoost * loop.loopBegin().loopFrequency() * uncertainty); + int maxDiff = LoopUnswitchMaxIncrease.getValue() + (int) (LoopUnswitchUncertaintyBoost.getValue() * loop.loopBegin().loopFrequency() * uncertainty); Debug.log("shouldUnswitch(%s, %s) : delta=%d, max=%d, %.2f%% inside of branches", loop, controlSplit, netDiff, maxDiff, (double) (inBranchTotal) / loopTotal * 100); return netDiff <= maxDiff; } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopTransformations.java --- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopTransformations.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/LoopTransformations.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.loop; +import static com.oracle.graal.phases.GraalOptions.*; + import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.graph.*; @@ -29,12 +31,11 @@ import com.oracle.graal.graph.NodeClass.Position; import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.extended.*; -import com.oracle.graal.phases.*; import com.oracle.graal.phases.common.*; public abstract class LoopTransformations { - private static final int UNROLL_LIMIT = GraalOptions.FullUnrollMaxNodes * 2; + private static final int UNROLL_LIMIT = FullUnrollMaxNodes.getValue() * 2; private LoopTransformations() { // does not need to be instantiated @@ -61,7 +62,7 @@ int mark = graph.getMark(); peel(loop); new CanonicalizerPhase.Instance(runtime, assumptions, mark, null).apply(graph); - if (iterations++ > UNROLL_LIMIT || graph.getNodeCount() > GraalOptions.MaximumDesiredSize * 3) { + if (iterations++ > UNROLL_LIMIT || graph.getNodeCount() > MaximumDesiredSize.getValue() * 3) { throw new BailoutException("FullUnroll : Graph seems to grow out of proportion"); } } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.loop/src/com/oracle/graal/loop/phases/LoopTransformHighPhase.java --- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/phases/LoopTransformHighPhase.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/phases/LoopTransformHighPhase.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.loop.phases; +import static com.oracle.graal.phases.GraalOptions.*; + import com.oracle.graal.debug.*; import com.oracle.graal.loop.*; import com.oracle.graal.nodes.*; @@ -34,7 +36,7 @@ @Override protected void run(StructuredGraph graph) { if (graph.hasLoops()) { - if (GraalOptions.LoopPeeling) { + if (LoopPeeling.getValue()) { NodesToDoubles probabilities = new ComputeProbabilityClosure(graph).apply(); LoopsData data = new LoopsData(graph); for (LoopEx loop : data.outterFirst()) { diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.loop/src/com/oracle/graal/loop/phases/LoopTransformLowPhase.java --- a/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/phases/LoopTransformLowPhase.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.loop/src/com/oracle/graal/loop/phases/LoopTransformLowPhase.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.loop.phases; +import static com.oracle.graal.phases.GraalOptions.*; + import com.oracle.graal.debug.*; import com.oracle.graal.graph.NodeClass.NodeClassIterator; import com.oracle.graal.loop.*; @@ -35,7 +37,7 @@ @Override protected void run(StructuredGraph graph) { if (graph.hasLoops()) { - if (GraalOptions.ReassociateInvariants) { + if (ReassociateInvariants.getValue()) { final LoopsData dataReassociate = new LoopsData(graph); Debug.scope("ReassociateInvariants", new Runnable() { @@ -47,7 +49,7 @@ } }); } - if (GraalOptions.LoopUnswitch) { + if (LoopUnswitch.getValue()) { boolean unswitched; do { unswitched = false; diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/GuardLoweringPhase.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.phases.common; +import static com.oracle.graal.phases.GraalOptions.*; + import java.util.*; import java.util.Map.Entry; @@ -220,7 +222,7 @@ private static void processBlock(Block block, SchedulePhase schedule, int implicitNullCheckLimit) { List nodes = schedule.nodesFor(block); - if (GraalOptions.OptImplicitNullChecks && implicitNullCheckLimit > 0) { + if (OptImplicitNullChecks.getValue() && implicitNullCheckLimit > 0) { new UseImplicitNullChecks(implicitNullCheckLimit).processNodes(nodes, block.getBeginNode()); } new LowerGuards(block).processNodes(nodes, block.getBeginNode()); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningPhase.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningPhase.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.phases.common; +import static com.oracle.graal.phases.GraalOptions.*; + import java.util.*; import java.util.concurrent.*; @@ -188,7 +190,7 @@ metricInliningRuns.increment(); Debug.dump(callerGraph, "after %s", callee); - if (GraalOptions.OptCanonicalizer) { + if (OptCanonicalizer.getValue()) { int markBeforeCanonicalization = callerGraph.getMark(); new CanonicalizerPhase.Instance(runtime, callerAssumptions, invokeUsages, markBeforeInlining, customCanonicalizer).apply(callerGraph); @@ -274,7 +276,7 @@ // probability to check the inlining } - if (GraalOptions.OptCanonicalizer) { + if (OptCanonicalizer.getValue()) { new CanonicalizerPhase.Instance(runtime, assumptions).apply(newGraph); } @@ -284,7 +286,7 @@ } private StructuredGraph getCachedGraph(ResolvedJavaMethod method) { - if (GraalOptions.CacheGraphs && cache != null) { + if (CacheGraphs.getValue() && cache != null) { StructuredGraph cachedGraph = cache.get(method); if (cachedGraph != null) { return cachedGraph; @@ -301,14 +303,14 @@ new DeadCodeEliminationPhase().apply(newGraph); - if (GraalOptions.OptCanonicalizer) { + if (OptCanonicalizer.getValue()) { new CanonicalizerPhase.Instance(runtime, assumptions).apply(newGraph); } - if (GraalOptions.CullFrameStates) { + if (CullFrameStates.getValue()) { new CullFrameStatesPhase().apply(newGraph); } - if (GraalOptions.CacheGraphs && cache != null) { + if (CacheGraphs.getValue() && cache != null) { cache.put(newGraph.copy()); } return newGraph; @@ -334,7 +336,7 @@ } protected double computeMaximumSize(double relevance, int configuredMaximum) { - double inlineRatio = Math.min(GraalOptions.RelevanceCapForInlining, relevance); + double inlineRatio = Math.min(RelevanceCapForInlining.getValue(), relevance); return configuredMaximum * inlineRatio; } @@ -416,7 +418,7 @@ } public boolean continueInlining(StructuredGraph currentGraph) { - if (currentGraph.getNodeCount() >= GraalOptions.MaximumDesiredSize) { + if (currentGraph.getNodeCount() >= MaximumDesiredSize.getValue()) { InliningUtil.logInliningDecision("inlining is cut off by MaximumDesiredSize"); metricInliningStoppedByMaxDesiredSize.increment(); return false; @@ -433,7 +435,7 @@ double inliningBonus = getInliningBonus(info); int lowLevelGraphSize = previousLowLevelGraphSize(info); - if (GraalOptions.SmallCompiledLowLevelGraphSize > 0 && lowLevelGraphSize > GraalOptions.SmallCompiledLowLevelGraphSize * inliningBonus) { + if (SmallCompiledLowLevelGraphSize.getValue() > 0 && lowLevelGraphSize > SmallCompiledLowLevelGraphSize.getValue() * inliningBonus) { return InliningUtil.logNotInlinedMethod(info, inliningDepth, "too large previous low-level graph: %d", lowLevelGraphSize); } @@ -445,16 +447,16 @@ */ int nodes = determineNodeCount(info); - if (nodes < GraalOptions.TrivialInliningSize * inliningBonus) { + if (nodes < TrivialInliningSize.getValue() * inliningBonus) { return InliningUtil.logInlinedMethod(info, inliningDepth, fullyProcessed, "trivial (nodes=%d)", nodes); } double invokes = determineInvokeProbability(info); - if (GraalOptions.LimitInlinedInvokes > 0 && fullyProcessed && invokes > GraalOptions.LimitInlinedInvokes * inliningBonus) { + if (LimitInlinedInvokes.getValue() > 0 && fullyProcessed && invokes > LimitInlinedInvokes.getValue() * inliningBonus) { return InliningUtil.logNotInlinedMethod(info, inliningDepth, "invoke probability is too high (%f)", invokes); } - double maximumNodes = computeMaximumSize(relevance, (int) (GraalOptions.MaximumInliningSize * inliningBonus)); + double maximumNodes = computeMaximumSize(relevance, (int) (MaximumInliningSize.getValue() * inliningBonus)); if (nodes < maximumNodes) { return InliningUtil.logInlinedMethod(info, inliningDepth, fullyProcessed, "relevance-based (relevance=%f, nodes=%d)", relevance, nodes); } @@ -790,7 +792,7 @@ } public double invokeRelevance(Invoke invoke) { - return Math.min(GraalOptions.CapInheritedRelevance, relevance) * nodeRelevance.get(invoke.asNode()); + return Math.min(CapInheritedRelevance.getValue(), relevance) * nodeRelevance.get(invoke.asNode()); } } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.phases.common; +import static com.oracle.graal.phases.GraalOptions.*; + import java.lang.reflect.*; import java.util.*; import java.util.concurrent.*; @@ -98,7 +100,7 @@ * Print a HotSpot-style inlining message to the console. */ private static void printInlining(final ResolvedJavaMethod method, final Invoke invoke, final int inliningDepth, final boolean success, final String msg, final Object... args) { - if (GraalOptions.HotSpotPrintInlining) { + if (HotSpotPrintInlining.getValue()) { final int mod = method.getModifiers(); // 1234567 TTY.print(" "); // print timestamp @@ -668,7 +670,7 @@ replacementNodes.add(null); } - if (GraalOptions.OptTailDuplication) { + if (OptTailDuplication.getValue()) { /* * We might want to perform tail duplication at the merge after a type switch, if * there are invokes that would benefit from the improvement in type information. @@ -1154,7 +1156,7 @@ ArrayList newConcreteMethods = new ArrayList<>(); ArrayList newConcreteMethodsProbabilities = new ArrayList<>(); for (int i = 0; i < concreteMethods.size(); ++i) { - if (concreteMethodsProbabilities.get(i) >= GraalOptions.MegamorphicInliningMinMethodProbability) { + if (concreteMethodsProbabilities.get(i) >= GraalOptions.MegamorphicInliningMinMethodProbability.getValue()) { newConcreteMethods.add(concreteMethods.get(i)); newConcreteMethodsProbabilities.add(concreteMethodsProbabilities.get(i)); } @@ -1227,7 +1229,7 @@ private static boolean checkTargetConditions(InliningData data, Replacements replacements, Invoke invoke, ResolvedJavaMethod method, OptimisticOptimizations optimisticOpts) { if (method == null) { return logNotInlinedMethodAndReturnFalse(invoke, data.inliningDepth(), method, "the method is not resolved"); - } else if (Modifier.isNative(method.getModifiers()) && (!GraalOptions.Intrinsify || !InliningUtil.canIntrinsify(replacements, method))) { + } else if (Modifier.isNative(method.getModifiers()) && (!GraalOptions.Intrinsify.getValue() || !InliningUtil.canIntrinsify(replacements, method))) { return logNotInlinedMethodAndReturnFalse(invoke, data.inliningDepth(), method, "it is a non-intrinsic native method"); } else if (Modifier.isAbstract(method.getModifiers())) { return logNotInlinedMethodAndReturnFalse(invoke, data.inliningDepth(), method, "it is an abstract method"); @@ -1235,7 +1237,7 @@ return logNotInlinedMethodAndReturnFalse(invoke, data.inliningDepth(), method, "the method's class is not initialized"); } else if (!method.canBeInlined()) { return logNotInlinedMethodAndReturnFalse(invoke, data.inliningDepth(), method, "it is marked non-inlinable"); - } else if (data.countRecursiveInlining(method) > GraalOptions.MaximumRecursiveInlining) { + } else if (data.countRecursiveInlining(method) > MaximumRecursiveInlining.getValue()) { return logNotInlinedMethodAndReturnFalse(invoke, data.inliningDepth(), method, "it exceeds the maximum recursive inlining depth"); } else if (new OptimisticOptimizations(method).lessOptimisticThan(optimisticOpts)) { return logNotInlinedMethodAndReturnFalse(invoke, data.inliningDepth(), method, "the callee uses less optimistic optimizations than caller"); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/LoweringPhase.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.phases.common; +import static com.oracle.graal.phases.GraalOptions.*; + import java.util.*; import com.oracle.graal.api.code.*; @@ -95,7 +97,7 @@ if (loweringType == LoweringType.AFTER_GUARDS) { throw new GraalInternalError("Cannot create guards in after-guard lowering"); } - if (GraalOptions.OptEliminateGuards) { + if (OptEliminateGuards.getValue()) { for (Node usage : condition.usages()) { if (!activeGuards.isNew(usage) && activeGuards.isMarked(usage) && ((GuardNode) usage).negated() == negated) { return (GuardNode) usage; @@ -103,7 +105,7 @@ } } GuardNode newGuard = guardAnchor.asNode().graph().unique(new GuardNode(condition, guardAnchor, deoptReason, action, negated)); - if (GraalOptions.OptEliminateGuards) { + if (OptEliminateGuards.getValue()) { activeGuards.grow(); activeGuards.mark(newGuard); } @@ -203,7 +205,7 @@ } } - if (parentAnchor == null && GraalOptions.OptEliminateGuards) { + if (parentAnchor == null && OptEliminateGuards.getValue()) { for (GuardNode guard : anchor.asNode().usages().filter(GuardNode.class)) { activeGuards.clear(guard); } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/SafepointInsertionPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/SafepointInsertionPhase.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/SafepointInsertionPhase.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.phases.common; +import static com.oracle.graal.phases.GraalOptions.*; + import com.oracle.graal.nodes.*; import com.oracle.graal.nodes.java.*; import com.oracle.graal.phases.*; @@ -33,7 +35,7 @@ @Override protected void run(StructuredGraph graph) { - if (GraalOptions.GenLoopSafepoints) { + if (GenLoopSafepoints.getValue()) { for (LoopEndNode loopEndNode : graph.getNodes(LoopEndNode.class)) { if (!loopEndNode.canSafepoint()) { continue; @@ -43,8 +45,8 @@ } } - if (GraalOptions.GenSafepoints) { - if (!GraalOptions.OptEliminateSafepoints || graph.getNodes(MethodCallTargetNode.class).isNotEmpty()) { + if (GenSafepoints.getValue()) { + if (!OptEliminateSafepoints.getValue() || graph.getNodes(MethodCallTargetNode.class).isNotEmpty()) { for (ReturnNode returnNode : graph.getNodes(ReturnNode.class)) { SafepointNode safepoint = graph.add(new SafepointNode()); graph.addBeforeFixed(returnNode, safepoint); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java --- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/TailDuplicationPhase.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.phases.common; +import static com.oracle.graal.phases.GraalOptions.*; + import java.util.*; import com.oracle.graal.debug.*; @@ -80,7 +82,7 @@ public static final TailDuplicationDecision DEFAULT_DECISION = new TailDuplicationDecision() { public boolean doTransform(MergeNode merge, int fixedNodeCount) { - if (fixedNodeCount < GraalOptions.TailDuplicationTrivialSize) { + if (fixedNodeCount < TailDuplicationTrivialSize.getValue()) { return true; } HashSet improvements = new HashSet<>(); @@ -136,7 +138,7 @@ // A snapshot is taken here, so that new MergeNode instances aren't considered for tail // duplication. for (MergeNode merge : graph.getNodes(MergeNode.class).snapshot()) { - if (!(merge instanceof LoopBeginNode) && nodeProbabilities.get(merge) >= GraalOptions.TailDuplicationProbability) { + if (!(merge instanceof LoopBeginNode) && nodeProbabilities.get(merge) >= TailDuplicationProbability.getValue()) { tailDuplicate(merge, DEFAULT_DECISION, null, phaseContext); } } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.phases/src/com/oracle/graal/phases/GraalOptions.java --- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/GraalOptions.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/GraalOptions.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,203 +22,328 @@ */ package com.oracle.graal.phases; +import com.oracle.graal.options.*; + /** * This class encapsulates options that control the behavior of the Graal compiler. - * - * (thomaswue) WARNING: Fields of this class are treated as final by Graal. */ // @formatter:off public final class GraalOptions { - // Checkstyle: stop - private static final boolean ____ = false; - // Checkstyle: resume + @Option(help = "Enable use of compiler intrinsics") + public static final OptionValue Intrinsify = new OptionValue<>(true); + @Option(help = "Enable inlining of monomorphic calls") + static final OptionValue InlineMonomorphicCalls = new OptionValue<>(true); + @Option(help = "Enable inlining of polymorphic calls") + static final OptionValue InlinePolymorphicCalls = new OptionValue<>(true); + @Option(help = "Enable inlining of megamorphic calls") + static final OptionValue InlineMegamorphicCalls = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue MegamorphicInliningMinMethodProbability = new OptionValue<>(0.33D); + @Option(help = "") + public static final OptionValue MaximumDesiredSize = new OptionValue<>(5000); + @Option(help = "") + public static final OptionValue MaximumRecursiveInlining = new OptionValue<>(1); // inlining settings - public static boolean Intrinsify = true; - static boolean InlineMonomorphicCalls = true; - static boolean InlinePolymorphicCalls = true; - static boolean InlineMegamorphicCalls = true; - public static double MegamorphicInliningMinMethodProbability = 0.33; - public static int MaximumDesiredSize = 5000; - public static int MaximumRecursiveInlining = 1; - public static float BoostInliningForEscapeAnalysis = 2f; - public static float RelevanceCapForInlining = 1f; - public static float CapInheritedRelevance = 1f; - public static boolean IterativeInlining = ____; + @Option(help = "") + public static final OptionValue BoostInliningForEscapeAnalysis = new OptionValue<>(2f); + @Option(help = "") + public static final OptionValue RelevanceCapForInlining = new OptionValue<>(1f); + @Option(help = "") + public static final OptionValue CapInheritedRelevance = new OptionValue<>(1f); + @Option(help = "") + public static final OptionValue IterativeInlining = new OptionValue<>(false); - public static int TrivialInliningSize = 10; - public static int MaximumInliningSize = 300; - public static int SmallCompiledLowLevelGraphSize = 300; - public static double LimitInlinedInvokes = 5.0; + @Option(help = "") + public static final OptionValue TrivialInliningSize = new OptionValue<>(10); + @Option(help = "") + public static final OptionValue MaximumInliningSize = new OptionValue<>(300); + @Option(help = "") + public static final OptionValue SmallCompiledLowLevelGraphSize = new OptionValue<>(300); + @Option(help = "") + public static final OptionValue LimitInlinedInvokes = new OptionValue<>(5.0); // escape analysis settings - public static boolean PartialEscapeAnalysis = true; - public static boolean EscapeAnalysisHistogram = ____; - public static int EscapeAnalysisIterations = 2; - public static String EscapeAnalyzeOnly = null; - public static int MaximumEscapeAnalysisArrayLength = 32; - public static boolean PEAInliningHints = ____; + @Option(help = "") + public static final OptionValue PartialEscapeAnalysis = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue EscapeAnalysisHistogram = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue EscapeAnalysisIterations = new OptionValue<>(2); + @Option(help = "") + public static final OptionValue EscapeAnalyzeOnly = new OptionValue<>(null); + @Option(help = "") + public static final OptionValue MaximumEscapeAnalysisArrayLength = new OptionValue<>(32); + @Option(help = "") + public static final OptionValue PEAInliningHints = new OptionValue<>(false); - public static double TailDuplicationProbability = 0.5; - public static int TailDuplicationTrivialSize = 1; + @Option(help = "") + public static final OptionValue TailDuplicationProbability = new OptionValue<>(0.5); + @Option(help = "") + public static final OptionValue TailDuplicationTrivialSize = new OptionValue<>(1); // profiling information - public static int DeoptsToDisableOptimisticOptimization = 40; - public static int MatureExecutionsBranch = 1; - public static int MatureExecutionsPerSwitchCase = 1; - public static int MatureExecutionsTypeProfile = 1; + @Option(help = "") + public static final OptionValue DeoptsToDisableOptimisticOptimization = new OptionValue<>(40); + @Option(help = "") + public static final OptionValue MatureExecutionsBranch = new OptionValue<>(1); + @Option(help = "") + public static final OptionValue MatureExecutionsPerSwitchCase = new OptionValue<>(1); + @Option(help = "") + public static final OptionValue MatureExecutionsTypeProfile = new OptionValue<>(1); // comilation queue - public static boolean DynamicCompilePriority = ____; - public static String CompileTheWorld = null; - public static int CompileTheWorldStartAt = 1; - public static int CompileTheWorldStopAt = Integer.MAX_VALUE; + @Option(help = "") + public static final OptionValue DynamicCompilePriority = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue CompileTheWorld = new OptionValue<>(null); + @Option(help = "") + public static final OptionValue CompileTheWorldStartAt = new OptionValue<>(1); + @Option(help = "") + public static final OptionValue CompileTheWorldStopAt = new OptionValue<>(Integer.MAX_VALUE); // graph caching - public static boolean CacheGraphs = true; - public static int GraphCacheSize = 1000; - public static boolean PrintGraphCache = ____; + @Option(help = "") + public static final OptionValue CacheGraphs = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue GraphCacheSize = new OptionValue<>(1000); + @Option(help = "") + public static final OptionValue PrintGraphCache = new OptionValue<>(false); //loop transform settings TODO (gd) tune - public static boolean LoopPeeling = true; - public static boolean ReassociateInvariants = true; - public static boolean FullUnroll = true; - public static boolean LoopUnswitch = true; - public static int FullUnrollMaxNodes = 300; - public static int ExactFullUnrollMaxNodes = 1200; - public static float MinimumPeelProbability = 0.35f; - public static int LoopMaxUnswitch = 3; - public static int LoopUnswitchMaxIncrease = 50; - public static int LoopUnswitchUncertaintyBoost = 5; - public static boolean UseLoopLimitChecks = true; + @Option(help = "") + public static final OptionValue LoopPeeling = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue ReassociateInvariants = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue FullUnroll = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue LoopUnswitch = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue FullUnrollMaxNodes = new OptionValue<>(300); + @Option(help = "") + public static final OptionValue ExactFullUnrollMaxNodes = new OptionValue<>(1200); + @Option(help = "") + public static final OptionValue MinimumPeelProbability = new OptionValue<>(0.35f); + @Option(help = "") + public static final OptionValue LoopMaxUnswitch = new OptionValue<>(3); + @Option(help = "") + public static final OptionValue LoopUnswitchMaxIncrease = new OptionValue<>(50); + @Option(help = "") + public static final OptionValue LoopUnswitchUncertaintyBoost = new OptionValue<>(5); + @Option(help = "") + public static final OptionValue UseLoopLimitChecks = new OptionValue<>(true); // debugging settings - public static boolean ZapStackOnMethodEntry = ____; - public static boolean DeoptALot = ____; - public static boolean VerifyPhases = false; + @Option(help = "") + public static final OptionValue ZapStackOnMethodEntry = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue DeoptALot = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue VerifyPhases = new OptionValue<>(false); - public static String PrintFilter = null; + @Option(help = "") + public static final OptionValue PrintFilter = new OptionValue<>(null); // Debug settings: - public static boolean BootstrapReplacements = ____; + @Option(help = "") + public static final OptionValue BootstrapReplacements = new OptionValue<>(false); // Ideal graph visualizer output settings - public static boolean PrintBinaryGraphs = true; - public static boolean PrintCFG = ____; - public static boolean PrintIdealGraphFile = ____; - public static String PrintIdealGraphAddress = "127.0.0.1"; - public static int PrintIdealGraphPort = 4444; - public static int PrintBinaryGraphPort = 4445; + @Option(help = "") + public static final OptionValue PrintBinaryGraphs = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue PrintCFG = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue PrintIdealGraphFile = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue PrintIdealGraphAddress = new OptionValue<>("127.0.0.1"); + @Option(help = "") + public static final OptionValue PrintIdealGraphPort = new OptionValue<>(4444); + @Option(help = "") + public static final OptionValue PrintBinaryGraphPort = new OptionValue<>(4445); // Other printing settings - public static boolean PrintCompilation = ____; - public static boolean PrintProfilingInformation = ____; - public static boolean PrintIRWithLIR = ____; - public static boolean PrintCodeBytes = ____; - public static boolean PrintBailout = ____; - public static int TraceLinearScanLevel = 0; - public static int TraceLIRGeneratorLevel = 0; - public static boolean TraceEscapeAnalysis = ____; - public static int TraceBytecodeParserLevel = 0; - public static boolean ExitVMOnBailout = ____; - public static boolean ExitVMOnException = true; - public static boolean PrintStackTraceOnException = false; + @Option(help = "") + public static final OptionValue PrintCompilation = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue PrintProfilingInformation = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue PrintIRWithLIR = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue PrintCodeBytes = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue PrintBailout = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue TraceLinearScanLevel = new OptionValue<>(0); + @Option(help = "") + public static final OptionValue TraceLIRGeneratorLevel = new OptionValue<>(0); + @Option(help = "") + public static final OptionValue TraceEscapeAnalysis = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue TraceBytecodeParserLevel = new OptionValue<>(0); + @Option(help = "") + public static final OptionValue ExitVMOnBailout = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue ExitVMOnException = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue PrintStackTraceOnException = new OptionValue<>(false); // HotSpot command line options - public static boolean HotSpotPrintCompilation = ____; - public static boolean HotSpotPrintInlining = ____; + @Option(help = "") + public static final OptionValue HotSpotPrintCompilation = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue HotSpotPrintInlining = new OptionValue<>(false); // Register allocator debugging - public static String RegisterPressure = null; + @Option(help = "") + public static final OptionValue RegisterPressure = new OptionValue<>(null); // Code generator settings - public static boolean ConditionalElimination = true; - public static boolean CullFrameStates = ____; - public static boolean UseProfilingInformation = true; - static boolean RemoveNeverExecutedCode = true; - static boolean UseExceptionProbability = true; - static boolean UseExceptionProbabilityForOperations = true; - public static boolean OmitHotExceptionStacktrace = ____; - public static boolean GenSafepoints = true; - public static boolean GenLoopSafepoints = true; - static boolean UseTypeCheckHints = true; - public static boolean InlineVTableStubs = true; - public static boolean AlwaysInlineVTableStubs = ____; - public static boolean GenAssertionCode = ____; - public static boolean AlignCallsForPatching = true; - public static boolean ResolveClassBeforeStaticInvoke = ____; - public static boolean CanOmitFrame = true; - public static int SafepointPollOffset = 256; + @Option(help = "") + public static final OptionValue ConditionalElimination = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue CullFrameStates = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue UseProfilingInformation = new OptionValue<>(true); + @Option(help = "") + static final OptionValue RemoveNeverExecutedCode = new OptionValue<>(true); + @Option(help = "") + static final OptionValue UseExceptionProbability = new OptionValue<>(true); + @Option(help = "") + static final OptionValue UseExceptionProbabilityForOperations = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue OmitHotExceptionStacktrace = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue GenSafepoints = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue GenLoopSafepoints = new OptionValue<>(true); + @Option(help = "") + static final OptionValue UseTypeCheckHints = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue InlineVTableStubs = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue AlwaysInlineVTableStubs = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue GenAssertionCode = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue AlignCallsForPatching = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue ResolveClassBeforeStaticInvoke = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue CanOmitFrame = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue SafepointPollOffset = new OptionValue<>(256); - public static boolean MemoryAwareScheduling = true; + @Option(help = "") + public static final OptionValue MemoryAwareScheduling = new OptionValue<>(true); // Translating tableswitch instructions - public static int MinimumJumpTableSize = 5; - public static int RangeTestsSwitchDensity = 5; - public static double MinTableSwitchDensity = 0.5; + @Option(help = "") + public static final OptionValue MinimumJumpTableSize = new OptionValue<>(5); + @Option(help = "") + public static final OptionValue RangeTestsSwitchDensity = new OptionValue<>(5); + @Option(help = "") + public static final OptionValue MinTableSwitchDensity = new OptionValue<>(0.5); // Runtime settings - public static int StackShadowPages = 2; + @Option(help = "") + public static final OptionValue StackShadowPages = new OptionValue<>(2); - public static boolean SupportJsrBytecodes = true; + @Option(help = "") + public static final OptionValue SupportJsrBytecodes = new OptionValue<>(true); - public static boolean OptAssumptions = true; - public static boolean OptConvertDeoptsToGuards = true; - public static boolean OptReadElimination = true; - public static boolean OptEarlyReadElimination = true; - public static boolean OptCanonicalizer = true; - public static boolean OptScheduleOutOfLoops = true; - public static boolean OptEliminateGuards = true; - public static boolean OptEliminateSafepoints = true; - public static boolean OptImplicitNullChecks = true; - public static boolean OptLivenessAnalysis = true; - public static boolean OptLoopTransform = true; - public static boolean OptFloatingReads = true; - public static boolean OptTailDuplication = true; - public static boolean OptEliminatePartiallyRedundantGuards = true; - public static boolean OptFilterProfiledTypes = true; - public static boolean OptDevirtualizeInvokesOptimistically = true; - public static boolean OptPushThroughPi = true; + @Option(help = "") + public static final OptionValue OptAssumptions = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue OptConvertDeoptsToGuards = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue OptReadElimination = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue OptEarlyReadElimination = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue OptCanonicalizer = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue OptScheduleOutOfLoops = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue OptEliminateGuards = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue OptEliminateSafepoints = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue OptImplicitNullChecks = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue OptLivenessAnalysis = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue OptLoopTransform = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue OptFloatingReads = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue OptTailDuplication = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue OptEliminatePartiallyRedundantGuards = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue OptFilterProfiledTypes = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue OptDevirtualizeInvokesOptimistically = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue OptPushThroughPi = new OptionValue<>(true); // Intrinsification settings - public static boolean IntrinsifyObjectClone = ____; - public static boolean IntrinsifyArrayCopy = true; - public static boolean IntrinsifyObjectMethods = true; - public static boolean IntrinsifySystemMethods = true; - public static boolean IntrinsifyClassMethods = true; - public static boolean IntrinsifyThreadMethods = true; - public static boolean IntrinsifyUnsafeMethods = true; - public static boolean IntrinsifyMathMethods = true; - public static boolean IntrinsifyAESMethods = true; - public static boolean IntrinsifyReflectionMethods = true; - public static boolean IntrinsifyInstalledCodeMethods = true; - public static boolean IntrinsifyCallSiteTarget = true; + @Option(help = "") + public static final OptionValue IntrinsifyObjectClone = new OptionValue<>(false); + @Option(help = "") + public static final OptionValue IntrinsifyArrayCopy = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue IntrinsifyObjectMethods = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue IntrinsifySystemMethods = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue IntrinsifyClassMethods = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue IntrinsifyThreadMethods = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue IntrinsifyUnsafeMethods = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue IntrinsifyMathMethods = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue IntrinsifyAESMethods = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue IntrinsifyReflectionMethods = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue IntrinsifyInstalledCodeMethods = new OptionValue<>(true); + @Option(help = "") + public static final OptionValue IntrinsifyCallSiteTarget = new OptionValue<>(true); /** * Counts the various paths taken through snippets. */ - public static boolean SnippetCounters = false; + @Option(help = "") + public static final OptionValue SnippetCounters = new OptionValue<>(false); /** * If the probability that a checkcast will hit one the profiled types (up to {@link #CheckcastMaxHints}) * is below this value, the checkcast will be compiled without hints. */ - public static double CheckcastMinHintHitProbability = 0.5; + @Option(help = "") + public static final OptionValue CheckcastMinHintHitProbability = new OptionValue<>(0.5); /** * The maximum number of hint types that will be used when compiling a checkcast for which * profiling information is available. Note that {@link #CheckcastMinHintHitProbability} * also influences whether hints are used. */ - public static int CheckcastMaxHints = 2; + @Option(help = "") + public static final OptionValue CheckcastMaxHints = new OptionValue<>(2); /** * @see #CheckcastMinHintHitProbability */ - public static double InstanceOfMinHintHitProbability = 0.5; + @Option(help = "") + public static final OptionValue InstanceOfMinHintHitProbability = new OptionValue<>(0.5); /** * @see #CheckcastMaxHints */ - public static int InstanceOfMaxHints = 2; + @Option(help = "") + public static final OptionValue InstanceOfMaxHints = new OptionValue<>(2); } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.phases/src/com/oracle/graal/phases/OptimisticOptimizations.java --- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/OptimisticOptimizations.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/OptimisticOptimizations.java Tue Jun 04 17:33:14 2013 +0200 @@ -79,39 +79,39 @@ } public boolean removeNeverExecutedCode() { - return GraalOptions.RemoveNeverExecutedCode && enabledOpts.contains(Optimization.RemoveNeverExecutedCode); + return GraalOptions.RemoveNeverExecutedCode.getValue() && enabledOpts.contains(Optimization.RemoveNeverExecutedCode); } public boolean useTypeCheckHints() { - return GraalOptions.UseTypeCheckHints && enabledOpts.contains(Optimization.UseTypeCheckHints); + return GraalOptions.UseTypeCheckHints.getValue() && enabledOpts.contains(Optimization.UseTypeCheckHints); } public boolean inlineMonomorphicCalls() { - return GraalOptions.InlineMonomorphicCalls && enabledOpts.contains(Optimization.UseTypeCheckedInlining); + return GraalOptions.InlineMonomorphicCalls.getValue() && enabledOpts.contains(Optimization.UseTypeCheckedInlining); } public boolean inlinePolymorphicCalls() { - return GraalOptions.InlinePolymorphicCalls && enabledOpts.contains(Optimization.UseTypeCheckedInlining); + return GraalOptions.InlinePolymorphicCalls.getValue() && enabledOpts.contains(Optimization.UseTypeCheckedInlining); } public boolean inlineMegamorphicCalls() { - return GraalOptions.InlineMegamorphicCalls && enabledOpts.contains(Optimization.UseTypeCheckedInlining); + return GraalOptions.InlineMegamorphicCalls.getValue() && enabledOpts.contains(Optimization.UseTypeCheckedInlining); } public boolean devirtualizeInvokes() { - return GraalOptions.OptDevirtualizeInvokesOptimistically && enabledOpts.contains(Optimization.UseTypeCheckedInlining); + return GraalOptions.OptDevirtualizeInvokesOptimistically.getValue() && enabledOpts.contains(Optimization.UseTypeCheckedInlining); } public boolean useExceptionProbability() { - return GraalOptions.UseExceptionProbability && enabledOpts.contains(Optimization.UseExceptionProbability); + return GraalOptions.UseExceptionProbability.getValue() && enabledOpts.contains(Optimization.UseExceptionProbability); } public boolean useExceptionProbabilityForOperations() { - return GraalOptions.UseExceptionProbabilityForOperations && enabledOpts.contains(Optimization.UseExceptionProbabilityForOperations); + return GraalOptions.UseExceptionProbabilityForOperations.getValue() && enabledOpts.contains(Optimization.UseExceptionProbabilityForOperations); } public boolean useLoopLimitChecks() { - return GraalOptions.UseLoopLimitChecks && enabledOpts.contains(Optimization.UseLoopLimitChecks); + return GraalOptions.UseLoopLimitChecks.getValue() && enabledOpts.contains(Optimization.UseLoopLimitChecks); } public boolean lessOptimisticThan(OptimisticOptimizations other) { @@ -124,6 +124,6 @@ } private static boolean checkDeoptimizations(ProfilingInfo profilingInfo, DeoptimizationReason reason) { - return profilingInfo.getDeoptimizationCount(reason) < GraalOptions.DeoptsToDisableOptimisticOptimization; + return profilingInfo.getDeoptimizationCount(reason) < GraalOptions.DeoptsToDisableOptimisticOptimization.getValue(); } } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java --- a/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.phases/src/com/oracle/graal/phases/schedule/SchedulePhase.java Tue Jun 04 17:33:14 2013 +0200 @@ -23,6 +23,7 @@ package com.oracle.graal.phases.schedule; import static com.oracle.graal.api.meta.LocationIdentity.*; +import static com.oracle.graal.phases.GraalOptions.*; import java.util.*; @@ -172,7 +173,7 @@ private final SchedulingStrategy selectedStrategy; public SchedulePhase() { - this(GraalOptions.OptScheduleOutOfLoops ? SchedulingStrategy.LATEST_OUT_OF_LOOPS : SchedulingStrategy.LATEST); + this(OptScheduleOutOfLoops.getValue() ? SchedulingStrategy.LATEST_OUT_OF_LOOPS : SchedulingStrategy.LATEST); } public SchedulePhase(SchedulingStrategy strategy) { @@ -185,7 +186,7 @@ earliestCache = graph.createNodeMap(); blockToNodesMap = new BlockMap<>(cfg); - if (GraalOptions.MemoryAwareScheduling && selectedStrategy != SchedulingStrategy.EARLIEST && graph.getNodes(FloatingReadNode.class).isNotEmpty()) { + if (MemoryAwareScheduling.getValue() && selectedStrategy != SchedulingStrategy.EARLIEST && graph.getNodes(FloatingReadNode.class).isNotEmpty()) { assignBlockToNodes(graph, SchedulingStrategy.EARLIEST); sortNodesWithinBlocks(graph, SchedulingStrategy.EARLIEST); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.printer/src/com/oracle/graal/printer/DebugEnvironment.java --- a/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/DebugEnvironment.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/DebugEnvironment.java Tue Jun 04 17:33:14 2013 +0200 @@ -23,13 +23,13 @@ package com.oracle.graal.printer; import static com.oracle.graal.compiler.GraalDebugConfig.*; +import static com.oracle.graal.phases.GraalOptions.*; import java.io.*; import java.util.*; import com.oracle.graal.compiler.*; import com.oracle.graal.debug.*; -import com.oracle.graal.phases.*; public class DebugEnvironment { @@ -37,8 +37,8 @@ Debug.enable(); List dumpHandlers = new ArrayList<>(); dumpHandlers.add(new GraphPrinterDumpHandler()); - if (GraalOptions.PrintCFG) { - if (GraalOptions.PrintBinaryGraphs) { + if (PrintCFG.getValue()) { + if (PrintBinaryGraphs.getValue()) { TTY.println("CFG dumping slows down PrintBinaryGraphs: use -G:-PrintCFG to disable it"); } dumpHandlers.add(new CFGPrinterObserver()); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.printer/src/com/oracle/graal/printer/GraphPrinterDumpHandler.java --- a/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/GraphPrinterDumpHandler.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.printer/src/com/oracle/graal/printer/GraphPrinterDumpHandler.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.printer; +import static com.oracle.graal.phases.GraalOptions.*; + import java.io.*; import java.net.*; import java.nio.channels.*; @@ -33,7 +35,6 @@ import com.oracle.graal.compiler.*; import com.oracle.graal.debug.*; import com.oracle.graal.graph.*; -import com.oracle.graal.phases.*; import com.oracle.graal.phases.schedule.*; /** @@ -60,7 +61,7 @@ return; } previousInlineContext.clear(); - if (GraalOptions.PrintIdealGraphFile) { + if (PrintIdealGraphFile.getValue()) { initializeFilePrinter(); } else { initializeNetworkPrinter(); @@ -75,7 +76,7 @@ private void initializeFilePrinter() { String ext; - if (GraalOptions.PrintBinaryGraphs) { + if (PrintBinaryGraphs.getValue()) { ext = ".bgv"; } else { ext = ".gv.xml"; @@ -91,7 +92,7 @@ num = "-" + Integer.toString(++i); } try { - if (GraalOptions.PrintBinaryGraphs) { + if (PrintBinaryGraphs.getValue()) { printer = new BinaryGraphPrinter(FileChannel.open(file.toPath(), StandardOpenOption.WRITE, StandardOpenOption.CREATE_NEW)); } else { printer = new IdealGraphPrinter(new FileOutputStream(file)); @@ -105,10 +106,10 @@ } private void initializeNetworkPrinter() { - String host = GraalOptions.PrintIdealGraphAddress; - int port = GraalOptions.PrintBinaryGraphs ? GraalOptions.PrintBinaryGraphPort : GraalOptions.PrintIdealGraphPort; + String host = PrintIdealGraphAddress.getValue(); + int port = PrintBinaryGraphs.getValue() ? PrintBinaryGraphPort.getValue() : PrintIdealGraphPort.getValue(); try { - if (GraalOptions.PrintBinaryGraphs) { + if (PrintBinaryGraphs.getValue()) { printer = new BinaryGraphPrinter(SocketChannel.open(new InetSocketAddress(host, port))); } else { IdealGraphPrinter xmlPrinter = new IdealGraphPrinter(new Socket(host, port).getOutputStream()); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/BoxingSnippets.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/BoxingSnippets.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/BoxingSnippets.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,7 @@ */ package com.oracle.graal.replacements; +import static com.oracle.graal.phases.GraalOptions.*; import static com.oracle.graal.replacements.SnippetTemplate.*; import java.lang.reflect.*; @@ -36,7 +37,6 @@ import com.oracle.graal.nodes.extended.*; import com.oracle.graal.nodes.spi.*; import com.oracle.graal.nodes.type.*; -import com.oracle.graal.phases.*; import com.oracle.graal.replacements.Snippet.Fold; import com.oracle.graal.replacements.Snippet.SnippetInliningPolicy; import com.oracle.graal.replacements.SnippetTemplate.AbstractTemplates; @@ -237,7 +237,7 @@ } } - private static final SnippetCounter.Group integerCounters = GraalOptions.SnippetCounters ? new SnippetCounter.Group("Integer intrinsifications") : null; + private static final SnippetCounter.Group integerCounters = SnippetCounters.getValue() ? new SnippetCounter.Group("Integer intrinsifications") : null; private static final SnippetCounter valueOfCounter = new SnippetCounter(integerCounters, "valueOf", "valueOf intrinsification"); } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraalMethodSubstitutions.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraalMethodSubstitutions.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/GraalMethodSubstitutions.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,11 +22,12 @@ */ package com.oracle.graal.replacements; +import static com.oracle.graal.phases.GraalOptions.*; + import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.api.runtime.*; import com.oracle.graal.nodes.spi.*; -import com.oracle.graal.phases.*; /** * Method substitutions that are VM-independent. @@ -39,7 +40,7 @@ replacements.registerSubstitutions(clazz); } - if (GraalOptions.Intrinsify) { + if (Intrinsify.getValue()) { replacements.registerSubstitutions(MathSubstitutionsX86.class); replacements.registerSubstitutions(DoubleSubstitutions.class); replacements.registerSubstitutions(FloatSubstitutions.class); diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/ReplacementsImpl.java Tue Jun 04 17:33:14 2013 +0200 @@ -23,6 +23,7 @@ package com.oracle.graal.replacements; import static com.oracle.graal.api.meta.MetaUtil.*; +import static com.oracle.graal.phases.GraalOptions.*; import java.lang.reflect.*; import java.util.*; @@ -320,7 +321,7 @@ graphBuilder.apply(graph); new WordTypeVerificationPhase(runtime, target.wordKind).apply(graph); - if (GraalOptions.OptCanonicalizer) { + if (OptCanonicalizer.getValue()) { new WordTypeRewriterPhase(runtime, target.wordKind).apply(graph); new CanonicalizerPhase.Instance(runtime, assumptions).apply(graph); } @@ -335,7 +336,7 @@ * @param callee the graph that was inlined into {@code caller} */ protected void afterInline(StructuredGraph caller, StructuredGraph callee) { - if (GraalOptions.OptCanonicalizer) { + if (OptCanonicalizer.getValue()) { new WordTypeRewriterPhase(runtime, target.wordKind).apply(caller); new CanonicalizerPhase.Instance(runtime, assumptions).apply(caller); } @@ -350,7 +351,7 @@ new WordTypeRewriterPhase(runtime, target.wordKind).apply(graph); new DeadCodeEliminationPhase().apply(graph); - if (GraalOptions.OptCanonicalizer) { + if (OptCanonicalizer.getValue()) { new CanonicalizerPhase.Instance(runtime, assumptions).apply(graph); } } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/IterativeInliningPhase.java --- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/IterativeInliningPhase.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/IterativeInliningPhase.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.virtual.phases.ea; +import static com.oracle.graal.phases.GraalOptions.*; + import java.util.*; import java.util.concurrent.*; @@ -50,7 +52,7 @@ } public static final void trace(String format, Object... obj) { - if (GraalOptions.TraceEscapeAnalysis) { + if (TraceEscapeAnalysis.getValue()) { Debug.log(format, obj); } } @@ -63,7 +65,7 @@ private void runIterations(final StructuredGraph graph, final boolean simple, final HighTierContext context) { Boolean continueIteration = true; - for (int iteration = 0; iteration < GraalOptions.EscapeAnalysisIterations && continueIteration; iteration++) { + for (int iteration = 0; iteration < EscapeAnalysisIterations.getValue() && continueIteration; iteration++) { continueIteration = Debug.scope("iteration " + iteration, new Callable() { @Override @@ -73,7 +75,7 @@ boolean eaResult = ea.runAnalysis(graph, context); progress |= eaResult; - Map hints = GraalOptions.PEAInliningHints ? PartialEscapeAnalysisPhase.getHints(graph) : null; + Map hints = PEAInliningHints.getValue() ? PartialEscapeAnalysisPhase.getHints(graph) : null; InliningPhase inlining = new InliningPhase(context.getRuntime(), hints, replacements, context.getAssumptions(), cache, plan, optimisticOpts); inlining.setMaxMethodsPerInlining(simple ? 1 : Integer.MAX_VALUE); @@ -82,7 +84,7 @@ new DeadCodeEliminationPhase().apply(graph); - if (GraalOptions.ConditionalElimination && GraalOptions.OptCanonicalizer) { + if (ConditionalElimination.getValue() && OptCanonicalizer.getValue()) { new CanonicalizerPhase().apply(graph, context); new IterativeConditionalEliminationPhase().apply(graph, context); } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeAnalysisPhase.java --- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeAnalysisPhase.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeAnalysisPhase.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.virtual.phases.ea; +import static com.oracle.graal.phases.GraalOptions.*; + import java.util.*; import java.util.concurrent.*; @@ -68,7 +70,7 @@ } public boolean runAnalysis(final StructuredGraph graph, final HighTierContext context) { - if (!VirtualUtil.matches(graph, GraalOptions.EscapeAnalyzeOnly)) { + if (!VirtualUtil.matches(graph, EscapeAnalyzeOnly.getValue())) { return false; } @@ -87,7 +89,7 @@ boolean continueIteration = true; boolean changed = false; - for (int iteration = 0; iteration < GraalOptions.EscapeAnalysisIterations && continueIteration; iteration++) { + for (int iteration = 0; iteration < EscapeAnalysisIterations.getValue() && continueIteration; iteration++) { boolean currentChanged = Debug.scope("iteration " + iteration, new Callable() { @Override @@ -109,7 +111,7 @@ new DeadCodeEliminationPhase().apply(graph); - if (GraalOptions.OptCanonicalizer) { + if (OptCanonicalizer.getValue()) { new CanonicalizerPhase.Instance(context.getRuntime(), context.getAssumptions(), null, customCanonicalizer).apply(graph); } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java --- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/PartialEscapeClosure.java Tue Jun 04 17:33:14 2013 +0200 @@ -23,6 +23,7 @@ package com.oracle.graal.virtual.phases.ea; import static com.oracle.graal.api.meta.LocationIdentity.*; +import static com.oracle.graal.phases.GraalOptions.*; import java.util.*; @@ -39,7 +40,6 @@ import com.oracle.graal.nodes.spi.*; import com.oracle.graal.nodes.spi.Virtualizable.EscapeState; import com.oracle.graal.nodes.virtual.*; -import com.oracle.graal.phases.*; import com.oracle.graal.phases.graph.*; import com.oracle.graal.phases.graph.ReentrantBlockIterator.BlockIteratorClosure; import com.oracle.graal.phases.graph.ReentrantBlockIterator.LoopInfo; @@ -167,7 +167,7 @@ VirtualUtil.trace("%s ", node); deleted = false; } - if (GraalOptions.OptEarlyReadElimination) { + if (OptEarlyReadElimination.getValue()) { if (!deleted && node instanceof MemoryCheckpoint) { METRIC_MEMORYCHECKOINT.increment(); MemoryCheckpoint checkpoint = (MemoryCheckpoint) node; diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/VirtualUtil.java --- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/VirtualUtil.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/VirtualUtil.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,13 +22,14 @@ */ package com.oracle.graal.virtual.phases.ea; +import static com.oracle.graal.phases.GraalOptions.*; + import java.util.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.debug.*; import com.oracle.graal.graph.*; import com.oracle.graal.nodes.*; -import com.oracle.graal.phases.*; public final class VirtualUtil { @@ -105,7 +106,7 @@ } public static void trace(String format, Object... obj) { - if (GraalOptions.TraceEscapeAnalysis) { + if (TraceEscapeAnalysis.getValue()) { Debug.log(format, obj); } } diff -r b2141bc6e98e -r 063a712fe8d8 graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/VirtualizerToolImpl.java --- a/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/VirtualizerToolImpl.java Tue Jun 04 15:42:42 2013 +0200 +++ b/graal/com.oracle.graal.virtual/src/com/oracle/graal/virtual/phases/ea/VirtualizerToolImpl.java Tue Jun 04 17:33:14 2013 +0200 @@ -22,6 +22,8 @@ */ package com.oracle.graal.virtual.phases.ea; +import static com.oracle.graal.phases.GraalOptions.*; + import com.oracle.graal.api.code.*; import com.oracle.graal.api.meta.*; import com.oracle.graal.graph.*; @@ -31,7 +33,6 @@ import com.oracle.graal.nodes.spi.Virtualizable.State; import com.oracle.graal.nodes.spi.*; import com.oracle.graal.nodes.virtual.*; -import com.oracle.graal.phases.*; class VirtualizerToolImpl implements VirtualizerTool { @@ -164,7 +165,7 @@ @Override public int getMaximumEntryCount() { - return GraalOptions.MaximumEscapeAnalysisArrayLength; + return MaximumEscapeAnalysisArrayLength.getValue(); } @Override @@ -183,14 +184,14 @@ @Override public void addReadCache(ValueNode object, ResolvedJavaField identity, ValueNode value) { - if (GraalOptions.OptEarlyReadElimination) { + if (OptEarlyReadElimination.getValue()) { state.addReadCache(object, identity, value); } } @Override public ValueNode getReadCache(ValueNode object, ResolvedJavaField identity) { - if (GraalOptions.OptEarlyReadElimination) { + if (OptEarlyReadElimination.getValue()) { return state.getReadCache(object, identity); } return null; @@ -198,7 +199,7 @@ @Override public void killReadCache(ResolvedJavaField identity) { - if (GraalOptions.OptEarlyReadElimination) { + if (OptEarlyReadElimination.getValue()) { state.killReadCache(identity); } } diff -r b2141bc6e98e -r 063a712fe8d8 make/build-graal.xml --- a/make/build-graal.xml Tue Jun 04 15:42:42 2013 +0200 +++ b/make/build-graal.xml Tue Jun 04 17:33:14 2013 +0200 @@ -105,6 +105,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +