Mercurial > hg > graal-jvmci-8
changeset 3168:adbb7bca84b7
Merge.
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Wed, 06 Jul 2011 17:02:38 +0200 |
parents | 132aa6f2bbc0 (diff) ce7e5b3798f7 (current diff) |
children | af4955a7ffc2 |
files | graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/value/FrameState.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/value/FrameStateBuilder.java |
diffstat | 9 files changed, 39 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Compare.java Wed Jul 06 16:51:01 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/Compare.java Wed Jul 06 17:02:38 2011 +0200 @@ -95,6 +95,15 @@ setY(y); } + @Override + public boolean valueEqual(Node i) { + if (i instanceof Compare) { + Compare compare = (Compare) i; + return compare.condition == condition && compare.unorderedIsTrue == unorderedIsTrue; + } + return super.valueEqual(i); + } + /** * Gets the condition (comparison operation) for this instruction. * @return the condition
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/GuardNode.java Wed Jul 06 16:51:01 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/GuardNode.java Wed Jul 06 17:02:38 2011 +0200 @@ -75,6 +75,11 @@ return new GuardNode(null, into); } + @Override + public boolean valueEqual(Node i) { + return i instanceof GuardNode; + } + @SuppressWarnings("unchecked") @Override public <T extends Op> T lookup(Class<T> clazz) {
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/RegisterFinalizer.java Wed Jul 06 16:51:01 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/RegisterFinalizer.java Wed Jul 06 17:02:38 2011 +0200 @@ -107,11 +107,11 @@ } if (needsCheck) { - if (GraalOptions.TraceGVN) { + if (GraalOptions.TraceCanonicalizer) { TTY.println("Could not canonicalize finalizer " + object + " (declaredType=" + declaredType + ", exactType=" + exactType + ")"); } } else { - if (GraalOptions.TraceGVN) { + if (GraalOptions.TraceCanonicalizer) { TTY.println("Canonicalized finalizer for object " + object); } return finalizer.next();
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GraphBuilderPhase.java Wed Jul 06 16:51:01 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GraphBuilderPhase.java Wed Jul 06 17:02:38 2011 +0200 @@ -1250,6 +1250,7 @@ } else if (block instanceof DeoptBlock) { createDeoptBlock((DeoptBlock) block); } else { + frameState.setRethrowException(false); iterateBytecodesForBlock(block); } }
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/value/FrameState.java Wed Jul 06 16:51:01 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/value/FrameState.java Wed Jul 06 17:02:38 2011 +0200 @@ -50,7 +50,7 @@ protected final int locksSize; - private final boolean rethrowException; + private boolean rethrowException; private static final int SUCCESSOR_COUNT = 0; @@ -641,4 +641,9 @@ public Node copy(Graph into) { return new FrameState(method, bci, localsSize, stackSize, locksSize, rethrowException, into); } + + @Override + public void setRethrowException(boolean b) { + rethrowException = b; + } }
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/value/FrameStateAccess.java Wed Jul 06 16:51:01 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/value/FrameStateAccess.java Wed Jul 06 17:02:38 2011 +0200 @@ -34,6 +34,8 @@ int locksSize(); + boolean rethrowException(); + Value valueAt(int i); Value localAt(int i); @@ -44,6 +46,8 @@ void setValueAt(int j, Value v); + void setRethrowException(boolean b); + Value outerFrameState(); FrameState duplicateWithException(int bci, Value exceptionObject);
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/value/FrameStateBuilder.java Wed Jul 06 16:51:01 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/value/FrameStateBuilder.java Wed Jul 06 17:02:38 2011 +0200 @@ -519,4 +519,14 @@ frameState.setOuterFrameState(outerFrameState()); return frameState; } + + @Override + public boolean rethrowException() { + return rethrowException; + } + + @Override + public void setRethrowException(boolean b) { + rethrowException = b; + } }
--- a/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotRuntime.java Wed Jul 06 16:51:01 2011 +0200 +++ b/graal/com.oracle.max.graal.runtime/src/com/oracle/max/graal/runtime/HotSpotRuntime.java Wed Jul 06 17:02:38 2011 +0200 @@ -307,7 +307,7 @@ LocationNode arrayLocation = createArrayLocation(graph, elementKind); arrayLocation.setIndex(storeIndexed.index()); Value value = storeIndexed.value(); - if (elementKind == CiKind.Object) { + if (elementKind == CiKind.Object && !value.isNullConstant()) { // Store check! if (storeIndexed.array().exactType() != null) { RiType elementType = storeIndexed.array().exactType().componentType();
--- a/src/share/vm/runtime/deoptimization.cpp Wed Jul 06 16:51:01 2011 +0200 +++ b/src/share/vm/runtime/deoptimization.cpp Wed Jul 06 17:02:38 2011 +0200 @@ -1247,6 +1247,7 @@ tty->print_cr("Exception to be rethrown in the interpreter for method %s::%s at bci %d", instanceKlass::cast(trap_method->method_holder())->name()->as_C_string(), trap_method->name()->as_C_string(), trap_bci); } GrowableArray<ScopeValue*>* expressions = trap_scope->expressions(); + guarantee(expressions != NULL, "must have exception to throw"); ScopeValue* topOfStack = expressions->top(); Handle topOfStackObj = cvf->create_stack_value(topOfStack)->get_obj(); THREAD->set_pending_exception(topOfStackObj(), NULL, 0);