@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 replaceWithVirtual(VirtualObjectNode virtual) { state.addAndMarkAlias(virtual, current, usages); if (current instanceof FixedWithNextNode) { effects.deleteFixedNode((FixedWithNextNode) current); } deleted = true; }