@Override public void createVirtualObject( VirtualObjectNode virtualObject, ValueNode[] entryState, int[] locks) { VirtualUtil.trace("{{%s}} ", current); if (virtualObject.isAlive()) { state.addAndMarkAlias(virtualObject, virtualObject, usages); } else { effects.addFloatingNode(virtualObject, "newVirtualObject"); } for (int i = 0; i < entryState.length; i++) { entryState[i] = state.getScalarAlias(entryState[i]); } state.addObject( virtualObject, new ObjectState(virtualObject, entryState, EscapeState.Virtual, locks)); state.addAndMarkAlias(virtualObject, virtualObject, usages); PartialEscapeClosure.METRIC_ALLOCATION_REMOVED.increment(); }
@Override public void replaceWithValue(ValueNode replacement) { effects.replaceAtUsages(current, state.getScalarAlias(replacement)); state.addScalarAlias(current, replacement); deleted = true; }
@Override public ValueNode getReplacedValue(ValueNode original) { return state.getScalarAlias(original); }