• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java VirtualFrame类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中com.oracle.truffle.api.frame.VirtualFrame的典型用法代码示例。如果您正苦于以下问题:Java VirtualFrame类的具体用法?Java VirtualFrame怎么用?Java VirtualFrame使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



VirtualFrame类属于com.oracle.truffle.api.frame包,在下文中一共展示了VirtualFrame类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: doOver

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
@Specialization(guards = {"function.getArity() < arguments.length"})
public Object doOver(VirtualFrame frame, Function function, Object[] arguments,
                     @Cached("createDispatchNode()") DispatchNode dispatchNode) {
    int argIndex = 0;

    while (function.getArity() < arguments.length-argIndex) {
        Object[] argumentValues = Arrays.copyOfRange(arguments, argIndex, argIndex+function.getArity());

        argIndex += function.getArity();
        function = (Function) call(dispatchNode, frame, function, function.packArguments(argumentValues), false);
    }

    Object[] remainingArguments = Arrays.copyOfRange(arguments, argIndex, arguments.length);

    if (function.getArity() > remainingArguments.length) {
        return function.curry(remainingArguments);
    } else {
        return call(dispatchNode, frame, function, function.packArguments(remainingArguments));
    }
}
 
开发者ID:ragnard,项目名称:shen-truffle,代码行数:21,代码来源:InvokeNode.java


示例2: executeGeneric

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
@Override
public Object executeGeneric(VirtualFrame frame) {
  Object parent = this.targetNode.executeGeneric(frame);

  if (this.type instanceof MethodType) {
    MethodType methodType = (MethodType)this.type;
    return new Method(parent, methodType.getCallTarget(), methodType.getName());
  }

  Class<?> parentClass = parent.getClass();
  try {
    Field field = parentClass.getField(this.propertyName);
    return field.get(parent);
  } catch (NoSuchFieldException | IllegalAccessException error) {
    throw new RuntimeException(error);
  }
}
 
开发者ID:dirk,项目名称:hummingbird2,代码行数:18,代码来源:HBPropertyNode.java


示例3: createBindings

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
@Specialization(guards = {"needsBindings()"})
public Bindings createBindings(
  VirtualFrame frame,
  @Cached("createGetBindingsNode()") GetBindingsNode getBindingsNode,
  @Cached(value = "createFetchers()", dimensions = 1) Fetcher[] fetchers
) {
  Bindings ownBindings = getBindingsNode.executeGetBindings(frame);
  Bindings bindings = new Bindings();
  if (fetchers.length > 0) {
    MaterializedFrame materializedFrame = frame.materialize();
    for (Fetcher fetcher : fetchers) {
      String name = fetcher.getName();
      Binding binding = fetcher.fetch(materializedFrame, ownBindings);
      bindings.add(name, binding);
    }
  }
  return bindings;
}
 
开发者ID:dirk,项目名称:hummingbird2,代码行数:19,代码来源:CreateBindingsNode.java


示例4: testCompileOnly4

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
@Test
public void testCompileOnly4() {
    // OSR should not trigger for compile-only includes
    try (TruffleOptionsOverrideScope scope = TruffleCompilerOptions.overrideOptions(TruffleCompileOnly, "foobar")) {
        final OSRRepeatingNode repeating = new OSRRepeatingNode(TruffleCompilerOptions.getValue(TruffleOSRCompilationThreshold));
        final LoopNode loop = runtime.createLoopNode(repeating);
        OptimizedCallTarget target = (OptimizedCallTarget) runtime.createCallTarget(new NamedRootNode("foobar") {

            @Child LoopNode loopChild = loop;

            @Override
            public Object execute(VirtualFrame frame) {
                loopChild.executeLoop(frame);
                return super.execute(frame);
            }

        });
        target.call();
        OptimizedCallTarget osrTarget = findOSRTarget(loop);
        if (osrTarget != null) {
            assertNotCompiled(osrTarget);
        }
    }
}
 
开发者ID:graalvm,项目名称:graal-core,代码行数:25,代码来源:OptimizedCallTargetTest.java


示例5: testCompileOnly5

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
@Test
public void testCompileOnly5() {
    // OSR should trigger if compile-only with excludes
    try (TruffleOptionsOverrideScope scope = TruffleCompilerOptions.overrideOptions(TruffleCompileOnly, "~foobar")) {
        final OSRRepeatingNode repeating = new OSRRepeatingNode(TruffleCompilerOptions.getValue(TruffleOSRCompilationThreshold));
        final LoopNode loop = runtime.createLoopNode(repeating);
        OptimizedCallTarget target = (OptimizedCallTarget) runtime.createCallTarget(new NamedRootNode("foobar") {

            @Child LoopNode loopChild = loop;

            @Override
            public Object execute(VirtualFrame frame) {
                loopChild.executeLoop(frame);
                return super.execute(frame);
            }

        });
        target.call();
        OptimizedCallTarget osrTarget = findOSRTarget(loop);
        assertCompiled(osrTarget);
    }
}
 
开发者ID:graalvm,项目名称:graal-core,代码行数:23,代码来源:OptimizedCallTargetTest.java


示例6: compilingLoop

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
private boolean compilingLoop(VirtualFrame frame) {
    int iterations = 0;
    try {
        do {
            OptimizedCallTarget target = compiledOSRLoop;
            if (target == null) {
                return false;
            }
            if (target.isValid()) {
                return directCallTarget(target, frame);
            }
            if (!target.isCompiling()) {
                invalidateOSRTarget(this, "OSR compilation failed or cancelled");
                return false;
            }

            iterations++;

        } while (repeatableNode.executeRepeating(frame));
        return true;
    } finally {
        baseLoopCount += iterations;
        reportParentLoopCount(iterations);
    }
}
 
开发者ID:graalvm,项目名称:graal-core,代码行数:26,代码来源:OptimizedOSRLoopNode.java


示例7: executeLoop

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
@Override
public void executeLoop(VirtualFrame frame) {
    if (CompilerDirectives.inInterpreter()) {
        try {
            boolean done = false;
            while (!done) {
                if (compiledOSRLoop == null) {
                    done = profilingLoop(frame);
                } else {
                    done = compilingLoop(frame);
                }
            }
        } finally {
            baseLoopCount = 0;
        }
    } else {
        while (repeatableNode.executeRepeating(frame)) {
            if (CompilerDirectives.inInterpreter()) {
                // compiled method got invalidated. We might need OSR again.
                executeLoop(frame);
                return;
            }
        }
    }
}
 
开发者ID:graalvm,项目名称:graal-core,代码行数:26,代码来源:OptimizedOSRLoopNode.java


示例8: profilingLoop

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
private boolean profilingLoop(VirtualFrame frame) {
    int iterations = 0;
    int threshold = getThreshold();
    try {
        while (repeatableNode.executeRepeating(frame)) {
            // the baseLoopCount might be updated from a child loop during an iteration.
            if (++iterations + baseLoopCount > threshold) {
                compileLoop(frame);
                return false;
            }
        }
        return true;
    } finally {
        baseLoopCount += iterations;
        reportParentLoopCount(iterations);
    }
}
 
开发者ID:graalvm,项目名称:graal-core,代码行数:18,代码来源:OptimizedOSRLoopNode.java


示例9: testControlFlow3

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
@Test
public void testControlFlow3() {
    testEnsureVirtualized(true, new TestNode() {
        @Override
        public void executeVoid(VirtualFrame frame) {
            Integer object = new Integer(intField);
            GraalDirectives.ensureVirtualized(object);
            if (booleanField) {
                field = 1;
            } else {
                field = 2;
            }
            field = object; // assert here
        }
    });
}
 
开发者ID:graalvm,项目名称:graal-core,代码行数:17,代码来源:TruffleEnsureVirtualizedTest.java


示例10: testIndirect2

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
@Test
public void testIndirect2() {
    testEnsureVirtualized(false, new TestNode() {
        @Override
        public void executeVoid(VirtualFrame frame) {
            Integer object = new Integer(intField);
            TestClass t = new TestClass();
            t.a = object;
            GraalDirectives.ensureVirtualized(t);

            if (booleanField) {
                field = object;
            } else {
                field = 2;
            }
        }
    });
}
 
开发者ID:graalvm,项目名称:graal-core,代码行数:19,代码来源:TruffleEnsureVirtualizedTest.java


示例11: createRootNode

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
@Override
protected OSRRootNode createRootNode(FrameDescriptor rootFrameDescriptor, Class<? extends VirtualFrame> clazz) {
    if (readFrameSlots == null || writtenFrameSlots == null) {
        return super.createRootNode(rootFrameDescriptor, clazz);
    } else {
        FrameDescriptor frameDescriptor = rootFrameDescriptor == null ? new FrameDescriptor() : rootFrameDescriptor;
        if (previousRoot == null) {
            previousRoot = new VirtualizingOSRRootNode(this, frameDescriptor, clazz, readFrameSlots, writtenFrameSlots);
        } else {
            // we want to reuse speculations from a previous compilation so no rewrite loops
            // occur.
            previousRoot = new VirtualizingOSRRootNode(previousRoot, this, frameDescriptor, clazz);
        }
        return previousRoot;
    }
}
 
开发者ID:graalvm,项目名称:graal-core,代码行数:17,代码来源:OptimizedOSRLoopNode.java


示例12: execute

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
@Override
public Object execute(VirtualFrame frame) {
    entered = 1;
    for (;;) {
        try {
            if (terminate != 0) {
                throw BREAK_EX;
            } else {
                throw CONTINUE_EX;
            }
        } catch (RuntimeException e) {
            if (e == BREAK_EX) {
                break;
            } else if (e == CONTINUE_EX) {
                continue;
            }
            throw e;
        }
    }
    return RETURN_VALUE;
}
 
开发者ID:graalvm,项目名称:graal-core,代码行数:22,代码来源:SafepointRethrowDeoptPETest.java


示例13: testCanBeClonedWithoutParent

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
@Test
public void testCanBeClonedWithoutParent() {
    final RootNode rootNode = new RootNode(null) {
        @Override
        public Object execute(VirtualFrame frame) {
            return 42;
        }

        @Override
        public boolean isCloningAllowed() {
            return true;
        }
    };
    final CallTarget callTarget = Truffle.getRuntime().createCallTarget(rootNode);
    final DirectCallNode callNode = Truffle.getRuntime().createDirectCallNode(callTarget);

    assertTrue(callNode.isCallTargetCloningAllowed());
    assertTrue(callNode.cloneCallTarget());
}
 
开发者ID:graalvm,项目名称:graal-core,代码行数:20,代码来源:TruffleDirectCallNodeTest.java


示例14: create

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
public ExecutionEventNode create(final EventContext ec) {
            final PrintStream out = new PrintStream(env.out());

            return new ExecutionEventNode() {
                /*@Override
                protected void onReturnValue(VirtualFrame frame, Object result) {
                    out.println("return" + this);
                }*/

                @Override
                protected void onEnter(VirtualFrame frame) {
                    Node node = ec.getInstrumentedNode();
                    out.println("node: " + node);
                    out.println("-> " + node.getEncapsulatingSourceSection().toString());
//                    if (node instanceof InvokeNode) {
//                        InvokeNode invokeNode = (InvokeNode) node;
//                        out.println("invoke: " + invokeNode.getForm());
//                    } else if (node instanceof EvalFactory.EvalNodeGen) {
//                        EvalFactory.EvalNodeGen evalNode = (EvalFactory.EvalNodeGen) node;
//                        out.println("eval: " + evalNode);
//                    } else if (node instanceof RootNode) {
//                        RootNode rootNode = (RootNode) node;
//                        out.println("root: " + rootNode);
//                    }
                }

            };
        }
 
开发者ID:ragnard,项目名称:shen-truffle,代码行数:29,代码来源:TraceInstrument.java


示例15: readObject

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
@Specialization(contains = {"readLong", "readBoolean"})
protected Object readObject(VirtualFrame frame) {
    if (!frame.isObject(getSlot())) {
        CompilerDirectives.transferToInterpreter();
        Object result = frame.getValue(getSlot());
        frame.setObject(getSlot(), result);
        return result;
    }

    return FrameUtil.getObjectSafe(frame, getSlot());
}
 
开发者ID:ragnard,项目名称:shen-truffle,代码行数:12,代码来源:ReadLocalVariableNode.java


示例16: writeLong

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
@Specialization(guards = "isLongOrIllegal(frame)")
protected long writeLong(VirtualFrame frame, long value) {
    getSlot().setKind(FrameSlotKind.Long);

    frame.setLong(getSlot(), value);
    return value;
}
 
开发者ID:ragnard,项目名称:shen-truffle,代码行数:8,代码来源:WriteLocalVariableNode.java


示例17: writeBoolean

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
@Specialization(guards = "isBooleanOrIllegal(frame)")
protected boolean writeBoolean(VirtualFrame frame, boolean value) {
    getSlot().setKind(FrameSlotKind.Boolean);

    frame.setBoolean(getSlot(), value);
    return value;
}
 
开发者ID:ragnard,项目名称:shen-truffle,代码行数:8,代码来源:WriteLocalVariableNode.java


示例18: write

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
@Specialization(contains = {"writeLong", "writeBoolean"})
protected Object write(VirtualFrame frame, Object value) {
    getSlot().setKind(FrameSlotKind.Object);

    frame.setObject(getSlot(), value);
    return value;
}
 
开发者ID:ragnard,项目名称:shen-truffle,代码行数:8,代码来源:WriteLocalVariableNode.java


示例19: read

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
@Specialization(contains = { "readLong", "readDouble", "readObject" })
protected Object read(VirtualFrame virtualFrame) {
    try {
        return this.readUpStack(Frame::getValue, virtualFrame);
    } catch (FrameSlotTypeException e) {
        // FrameSlotTypeException not thrown
    }
    return null;
}
 
开发者ID:ragnard,项目名称:shen-truffle,代码行数:10,代码来源:ReadLexicalClosureVariableNode.java


示例20: executeGeneric

import com.oracle.truffle.api.frame.VirtualFrame; //导入依赖的package包/类
@Override
public Object executeGeneric(VirtualFrame frame) {
    Object[] args = frame.getArguments();
    return args[index];

    // if (index < args.length) {
    //     return args[index];
    // } else {
    //     /* In the interpreter, record profiling information that the branch was used. */
    //     outOfBoundsTaken.enter();
    //     /* Use the default null value. */
    //     return SLNull.SINGLETON;
    // }
}
 
开发者ID:ragnard,项目名称:shen-truffle,代码行数:15,代码来源:ReadArgumentNode.java



注:本文中的com.oracle.truffle.api.frame.VirtualFrame类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java Connection类代码示例发布时间:2022-05-22
下一篇:
Java RowHash类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap