# HG changeset patch # User Thomas Wuerthinger # Date 1305116329 -7200 # Node ID 4694daa6af3a7edcc5f90f73a51db80e3164e6f2 # Parent 3b807c0c5eebfb1b8fbae9ec87f5080096ee3e2d Removed CSE array length. diff -r 3b807c0c5eeb -r 4694daa6af3a graal/GraalCompiler/src/com/sun/c1x/C1XOptions.java --- a/graal/GraalCompiler/src/com/sun/c1x/C1XOptions.java Wed May 11 14:16:13 2011 +0200 +++ b/graal/GraalCompiler/src/com/sun/c1x/C1XOptions.java Wed May 11 14:18:49 2011 +0200 @@ -87,7 +87,6 @@ public static boolean QuietBailout = ____; // all optimization settings - public static boolean OptCSEArrayLength; public static boolean OptBlockSkipping; public static boolean OptControlFlow; @@ -156,7 +155,6 @@ OptInline = ll; // Level 3 optimizations - OptCSEArrayLength = lll; UseStackMapTableLiveness = lll; UseAssumptions = lll; OptBlockSkipping = lll; diff -r 3b807c0c5eeb -r 4694daa6af3a graal/GraalCompiler/src/com/sun/c1x/graph/GraphBuilder.java --- a/graal/GraalCompiler/src/com/sun/c1x/graph/GraphBuilder.java Wed May 11 14:16:13 2011 +0200 +++ b/graal/GraalCompiler/src/com/sun/c1x/graph/GraphBuilder.java Wed May 11 14:18:49 2011 +0200 @@ -348,10 +348,7 @@ void genLoadIndexed(CiKind kind) { Value index = frameState.ipop(); Value array = frameState.apop(); - Value length = null; - if (cseArrayLength(array)) { - length = append(new ArrayLength(array, graph)); - } + Value length = append(new ArrayLength(array, graph)); Value v = append(new LoadIndexed(array, index, length, kind, graph)); frameState.push(kind.stackKind(), v); } @@ -360,10 +357,7 @@ Value value = frameState.pop(kind.stackKind()); Value index = frameState.ipop(); Value array = frameState.apop(); - Value length = null; - if (cseArrayLength(array)) { - length = append(new ArrayLength(array, graph)); - } + Value length = append(new ArrayLength(array, graph)); StoreIndexed result = new StoreIndexed(array, index, length, kind, value, graph); append(result); } @@ -887,15 +881,8 @@ append(new Return(x, !noSafepoints(), graph)); } - /** - * Gets the number of locks held. - */ - private int locksSize() { - return frameState.locksSize(); - } - void genMonitorEnter(Value x, int bci) { - int lockNumber = locksSize(); + int lockNumber = frameState.locksSize(); MonitorAddress lockAddress = null; if (compilation.runtime.sizeOfBasicObjectLock() != 0) { lockAddress = new MonitorAddress(lockNumber, graph); @@ -973,31 +960,6 @@ append(new LookupSwitch(frameState.ipop(), list, keys, stateBefore, isSafepoint, graph)); } - /** - * Determines whether the length of an array should be extracted out as a separate instruction - * before an array indexing instruction. This exposes it to CSE. - * @param array - * @return - */ - private boolean cseArrayLength(Value array) { - // checks whether an array length access should be generated for CSE - if (C1XOptions.OptCSEArrayLength) { - // always access the length for CSE - return true; - } else if (array.isConstant()) { - // the array itself is a constant - return true; - } else if (array instanceof LoadField && ((LoadField) array).constantValue() != null) { - // the length is derived from a constant array - return true; - } else if (array instanceof NewArray) { - // the array is derived from an allocation - final Value length = ((NewArray) array).length(); - return length != null && length.isConstant(); - } - return false; - } - private Value appendConstant(CiConstant type) { return appendWithBCI(new Constant(type, graph), bci()); } @@ -1076,7 +1038,7 @@ Value exception = appendWithoutOptimization(new ExceptionObject(graph), bci); assert lock != null; - assert frameState.locksSize() > 0 && frameState.lockAt(locksSize() - 1) == lock; + assert frameState.locksSize() > 0 && frameState.lockAt(frameState.locksSize() - 1) == lock; if (lock instanceof Instruction) { Instruction l = (Instruction) lock; if (!l.isAppended()) {