Mercurial > hg > graal-jvmci-8
changeset 10809:438dd12ff25b
reset "permanent" flag on ValueAnchorNodes during inlining
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Thu, 18 Jul 2013 14:35:12 +0200 |
parents | 4278ab23c66f |
children | 4e1db4c9d4c5 |
files | graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java |
diffstat | 2 files changed, 11 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java Thu Jul 18 14:34:45 2013 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/ValueAnchorNode.java Thu Jul 18 14:35:12 2013 +0200 @@ -46,7 +46,7 @@ this.anchored = new NodeInputList<>(this, values); } - private final boolean permanent; + private boolean permanent; @Override public void generate(LIRGeneratorTool gen) { @@ -67,6 +67,10 @@ return anchored; } + public void setPermanent(boolean permanent) { + this.permanent = permanent; + } + public boolean isPermanent() { return permanent; }
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java Thu Jul 18 14:34:45 2013 +0200 +++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java Thu Jul 18 14:35:12 2013 +0200 @@ -1390,6 +1390,12 @@ frameState.setOuterFrameState(outerFrameState); } } + } else if (node instanceof ValueAnchorNode) { + /* + * Synchronized inlinees have a valid point to deopt to after the monitor exit + * at the end, so there's no need for the value anchor to be permanent anymore. + */ + ((ValueAnchorNode) node).setPermanent(false); } if (callerLockDepth != 0 && node instanceof MonitorReference) { MonitorReference monitor = (MonitorReference) node;