Mercurial > hg > graal-compiler
changeset 3017:b4ba003eb11d
Fixed unnecessary node in the graph builder.
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Sat, 18 Jun 2011 14:51:18 +0200 |
parents | 2f5f6ffbafa0 |
children | 5857923e563c |
files | graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/gen/LIRGenerator.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GraphBuilderPhase.java runfop.sh src/share/vm/runtime/deoptimization.cpp |
diffstat | 4 files changed, 15 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/gen/LIRGenerator.java Sat Jun 18 12:19:51 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/gen/LIRGenerator.java Sat Jun 18 14:51:18 2011 +0200 @@ -980,6 +980,7 @@ @Override public void visitDeoptimize(Deoptimize deoptimize) { assert lastState != null : "deoptimize always needs a state"; + assert lastState.bci != Instruction.SYNCHRONIZATION_ENTRY_BCI : "bci must not be -1 for deopt framestate"; DeoptimizationStub stub = new DeoptimizationStub(deoptimize.action(), lastState); addDeoptimizationStub(stub); lir.branch(Condition.TRUE, stub.label, stub.info);
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GraphBuilderPhase.java Sat Jun 18 12:19:51 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GraphBuilderPhase.java Sat Jun 18 14:51:18 2011 +0200 @@ -1048,11 +1048,11 @@ } private void genJsr(int dest) { - throw new CiBailout("jsr/ret not supported"); + throw new JSRNotSupportedBailout(); } private void genRet(int localIndex) { - throw new CiBailout("jsr/ret not supported"); + throw new JSRNotSupportedBailout(); } private void genTableswitch() { @@ -1292,16 +1292,16 @@ Deoptimize deopt = new Deoptimize(DeoptAction.InvalidateRecompile, graph); deopt.setMessage("unresolved " + block.handler.catchType().name()); append(deopt); - FixedNode nextDispatch = createTarget(nextBlock, frameState); - appendGoto(nextDispatch); +// FixedNode nextDispatch = createTarget(nextBlock, frameState); +// appendGoto(nextDispatch); } } } private void appendGoto(FixedNode target) { if (lastInstr != null) { - lastInstr.setNext(target); - } + lastInstr.setNext(target); + } } private void iterateBytecodesForBlock(Block block) {
--- a/runfop.sh Sat Jun 18 12:19:51 2011 +0200 +++ b/runfop.sh Sat Jun 18 14:51:18 2011 +0200 @@ -15,4 +15,4 @@ echo "DACAPO is not defined. It must point to a Dacapo benchmark directory." exit 1; fi -${JDK7}/bin/java -client -d64 -graal -Xms1g -Xmx2g -esa -classpath ${DACAPO}/dacapo-9.12-bach.jar $* Harness --preserve -n 5 fop +${JDK7}/bin/java -client -d64 -graal -Xms1g -Xmx2g -esa -classpath ${DACAPO}/dacapo-9.12-bach.jar -XX:-GraalBailoutIsFatal $* Harness --preserve -n 5 fop
--- a/src/share/vm/runtime/deoptimization.cpp Sat Jun 18 12:19:51 2011 +0200 +++ b/src/share/vm/runtime/deoptimization.cpp Sat Jun 18 14:51:18 2011 +0200 @@ -1223,13 +1223,18 @@ // tty->print_cr("trap_request: %08x, cpi: %i, pc: %016x", trap_request, unloaded_class_index, fr.pc()); + Events::log("Uncommon trap occurred @" INTPTR_FORMAT " unloaded_class_index = %d", fr.pc(), (int) trap_request); vframe* vf = vframe::new_vframe(&fr, ®_map, thread); compiledVFrame* cvf = compiledVFrame::cast(vf); - + nmethod* nm = cvf->code(); + ScopeDesc* trap_scope = cvf->scope(); + + if (TraceDeoptimization) { + tty->print_cr("Deoptimization: bci=%d pc=%d, relative_pc=%d, method=%s", trap_scope->bci(), fr.pc(), fr.pc() - nm->code_begin(), trap_scope->method()->name()->as_C_string()); + } - ScopeDesc* trap_scope = cvf->scope(); methodHandle trap_method = trap_scope->method(); int trap_bci = trap_scope->bci(); Bytecodes::Code trap_bc = trap_method->java_code_at(trap_bci);