private OSRRootNode createRootNodeImpl(RootNode root, Class<? extends VirtualFrame> frameClass) { return createRootNode(root == null ? null : root.getFrameDescriptor(), frameClass); }
List<? extends FrameSlot> slots; if (frame == null) { slots = root.getFrameDescriptor().getSlots(); } else { slots = frame.getFrameDescriptor().getSlots();
private static Object getVariables(RootNode root, Frame frame) { List<? extends FrameSlot> slots; if (frame == null) { slots = root.getFrameDescriptor().getSlots(); } else { slots = frame.getFrameDescriptor().getSlots();
private static Object getVariables(RootNode root, Frame frame) { List<? extends FrameSlot> slots; if (frame == null) { slots = root.getFrameDescriptor().getSlots(); } else { slots = frame.getFrameDescriptor().getSlots();
@Override protected void onDispose(VirtualFrame frame) { FrameDescriptor frameDescriptor = context.getInstrumentedNode().getRootNode().getFrameDescriptor(); if (frameDescriptor.getIdentifiers().contains(KEY_TIME_STARTED)) { frameDescriptor.removeFrameSlot(KEY_TIME_STARTED); } if (frameDescriptor.getIdentifiers().contains(KEY_PARENT_COUNTER)) { frameDescriptor.removeFrameSlot(KEY_PARENT_COUNTER); } }
TimedCounterNode(Profiler profiler, Counter counter, EventContext context) { super(profiler, counter); this.context = context; FrameDescriptor frameDescriptor = context.getInstrumentedNode().getRootNode().getFrameDescriptor(); this.timeStartedSlot = frameDescriptor.findOrAddFrameSlot(KEY_TIME_STARTED, "profiler:timeStarted", FrameSlotKind.Long); this.parentCounterSlot = frameDescriptor.findOrAddFrameSlot(KEY_PARENT_COUNTER, "profiler:parentCounter", FrameSlotKind.Object); }
private static void clearFrame(RootNode root, MaterializedFrame frame) { FrameDescriptor descriptor = frame.getFrameDescriptor(); if (root.getFrameDescriptor() == descriptor) { // Clear only those frames that correspond to the current root Object value = descriptor.getDefaultValue(); for (FrameSlot slot : descriptor.getSlots()) { frame.setObject(slot, value); } } }
public final Object callInlined(Object... arguments) { getCompilationProfile().profileInlinedCall(); return callProxy(createFrame(getRootNode().getFrameDescriptor(), arguments)); }
/** * Forces OSR compilation for this loop. */ public final void forceOSR() { baseLoopCount = getThreshold(); RootNode rootNode = getRootNode(); VirtualFrame dummyFrame = Truffle.getRuntime().createVirtualFrame(new Object[0], rootNode != null ? rootNode.getFrameDescriptor() : new FrameDescriptor()); compileLoop(dummyFrame); }
@Override protected void innerOnDispose(EventContext context, VirtualFrame frame) { Lock lock = getLock(); lock.lock(); try { if (inputSlots != null) { FrameSlot[] slots = inputSlots; inputSlots = null; RootNode rootNode = context.getInstrumentedNode().getRootNode(); if (rootNode == null) { return; } FrameDescriptor descriptor = rootNode.getFrameDescriptor(); assert descriptor != null; for (FrameSlot slot : slots) { FrameSlot resolvedSlot = descriptor.findFrameSlot(slot.getIdentifier()); if (resolvedSlot != null) { descriptor.removeFrameSlot(slot.getIdentifier()); } else { // slot might be shared and already removed by another event provider // node. } } } } finally { lock.unlock(); } super.innerOnDispose(context, frame); }
@Override protected void innerOnDispose(EventContext context, VirtualFrame frame) { Lock lock = getLock(); lock.lock(); try { if (inputSlots != null) { FrameSlot[] slots = inputSlots; inputSlots = null; RootNode rootNode = context.getInstrumentedNode().getRootNode(); if (rootNode == null) { return; } FrameDescriptor descriptor = rootNode.getFrameDescriptor(); assert descriptor != null; for (FrameSlot slot : slots) { FrameSlot resolvedSlot = descriptor.findFrameSlot(slot.getIdentifier()); if (resolvedSlot != null) { descriptor.removeFrameSlot(slot.getIdentifier()); } else { // slot might be shared and already removed by another event provider // node. } } } } finally { lock.unlock(); } super.innerOnDispose(context, frame); }
protected final Object callRoot(Object[] originalArguments) { if (GraalCompilerDirectives.inFirstTier()) { getCompilationProfile().firstTierCall(this); } Object[] args = originalArguments; OptimizedCompilationProfile profile = this.compilationProfile; if (CompilerDirectives.inCompiledCode() && profile != null) { args = profile.injectArgumentProfile(originalArguments); } Object result = callProxy(createFrame(getRootNode().getFrameDescriptor(), args)); if (profile != null) { profile.profileReturnValue(result); } return result; }
@Override public Object call(Object... args) { final VirtualFrame frame = new DefaultVirtualFrame(getRootNode().getFrameDescriptor(), args); FrameInstance oldCurrentFrame = defaultTruffleRuntime().setCurrentFrame(new FrameInstance() { public Frame getFrame(FrameAccess access, boolean slowPath) { return frame; } public boolean isVirtualFrame() { return false; } public Node getCallNode() { return null; } public CallTarget getCallTarget() { return DefaultCallTarget.this; } }); try { return getRootNode().execute(frame); } finally { defaultTruffleRuntime().setCurrentFrame(oldCurrentFrame); } }
@Override public Object call(Object... args) { if (!this.initialized) { initialize(); } final DefaultVirtualFrame frame = new DefaultVirtualFrame(getRootNode().getFrameDescriptor(), args); getRuntime().pushFrame(frame, this); try { return getRootNode().execute(frame); } catch (Throwable t) { getRuntime().getTvmci().onThrowable(null, this, t, frame); throw t; } finally { getRuntime().popFrame(); } }
Object callDirectOrIndirect(final Node callNode, Object... args) { if (!this.initialized) { initialize(); } final DefaultVirtualFrame frame = new DefaultVirtualFrame(getRootNode().getFrameDescriptor(), args); getRuntime().pushFrame(frame, this, callNode); try { return getRootNode().execute(frame); } catch (Throwable t) { getRuntime().getTvmci().onThrowable(callNode, this, t, frame); throw t; } finally { getRuntime().popFrame(); } }
Object callDirectOrIndirect(final Node callNode, Object... args) { if (!this.initialized) { initialize(); } final DefaultVirtualFrame frame = new DefaultVirtualFrame(getRootNode().getFrameDescriptor(), args); getRuntime().pushFrame(frame, this, callNode); try { return getRootNode().execute(frame); } catch (Throwable t) { getRuntime().getTvmci().onThrowable(callNode, this, t, frame); throw t; } finally { getRuntime().popFrame(); } }
@Override public Object call(Object... args) { if (!this.initialized) { initialize(); } final DefaultVirtualFrame frame = new DefaultVirtualFrame(getRootNode().getFrameDescriptor(), args); getRuntime().pushFrame(frame, this); try { return getRootNode().execute(frame); } catch (Throwable t) { getRuntime().getTvmci().onThrowable(null, this, t, frame); throw t; } finally { getRuntime().popFrame(); } }