本文整理汇总了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;未经允许,请勿转载。 |
请发表评论