mirror of
https://github.com/openjdk/jdk.git
synced 2026-05-13 15:09:39 +00:00
8049532: LogCompilation: C1: inlining tree is flat (no depth is stored)
Reviewed-by: roland, iveresov
This commit is contained in:
parent
c51f489786
commit
c24909197f
@ -478,9 +478,17 @@ public class LogParser extends DefaultHandler implements ErrorHandler, Constants
|
||||
} else if (scopes.peek().getCalls().size() > 2 && m == scopes.peek().last(-2).getMethod()) {
|
||||
scopes.push(scopes.peek().last(-2));
|
||||
} else {
|
||||
System.out.println(site.getMethod());
|
||||
System.out.println(m);
|
||||
throw new InternalError("call site and parse don't match");
|
||||
// C1 prints multiple method tags during inlining when it narrows method being inlinied.
|
||||
// Example:
|
||||
// ...
|
||||
// <method id="813" holder="694" name="toString" return="695" flags="1" bytes="36" iicount="1"/>
|
||||
// <call method="813" instr="invokevirtual"/>
|
||||
// <inline_success reason="receiver is statically known"/>
|
||||
// <method id="814" holder="792" name="toString" return="695" flags="1" bytes="5" iicount="3"/>
|
||||
// <parse method="814">
|
||||
// ...
|
||||
site.setMethod(m);
|
||||
scopes.push(site);
|
||||
}
|
||||
}
|
||||
} else if (qname.equals("parse_done")) {
|
||||
|
||||
@ -3964,10 +3964,15 @@ bool GraphBuilder::try_inline_full(ciMethod* callee, bool holder_known, Bytecode
|
||||
// Clear out bytecode stream
|
||||
scope_data()->set_stream(NULL);
|
||||
|
||||
CompileLog* log = compilation()->log();
|
||||
if (log != NULL) log->head("parse method='%d'", log->identify(callee));
|
||||
|
||||
// Ready to resume parsing in callee (either in the same block we
|
||||
// were in before or in the callee's start block)
|
||||
iterate_all_blocks(callee_start_block == NULL);
|
||||
|
||||
if (log != NULL) log->done("parse");
|
||||
|
||||
// If we bailed out during parsing, return immediately (this is bad news)
|
||||
if (bailed_out())
|
||||
return false;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user