当前位置: 首页>>代码示例>>Java>>正文


Java Specialization类代码示例

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


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

示例1: doOver

import com.oracle.truffle.api.dsl.Specialization; //导入依赖的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: createBindings

import com.oracle.truffle.api.dsl.Specialization; //导入依赖的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

示例3: callUntilCompiled

import com.oracle.truffle.api.dsl.Specialization; //导入依赖的package包/类
@Specialization
public SLFunction callUntilCompiled(SLFunction function, boolean checkTarget) {
    OptimizedCallTarget target = ((OptimizedCallTarget) function.getCallTarget());
    for (int i = 0; i < MAX_CALLS; i++) {
        if (isCompiling(target)) {
            break;
        } else {
            indirectCall.call(target, EMPTY_ARGS);
        }
    }

    // call one more in compiled
    indirectCall.call(target, EMPTY_ARGS);

    if (checkTarget) {
        checkTarget(target);
    }

    return function;
}
 
开发者ID:graalvm,项目名称:graal-core,代码行数:21,代码来源:SLCallUntilOptimizedBuiltin.java

示例4: doDoubleArray

import com.oracle.truffle.api.dsl.Specialization; //导入依赖的package包/类
@Specialization(guards = "arr.isDoubleType()")
public final SArray doDoubleArray(final SArray arr, final SBlock block) {
  double[] storage = arr.getDoubleStorage(storageType);
  int length = storage.length;
  try {
    if (SArray.FIRST_IDX < length) {
      execBlock(block, storage[SArray.FIRST_IDX]);
    }
    for (long i = SArray.FIRST_IDX + 1; i < length; i++) {
      execBlock(block, storage[(int) i]);
    }
  } finally {
    if (CompilerDirectives.inInterpreter()) {
      SomLoop.reportLoopCount(length, this);
    }
  }
  return arr;
}
 
开发者ID:smarr,项目名称:SOMns,代码行数:19,代码来源:DoPrim.java

示例5: toNearRefWithResultPromise

import com.oracle.truffle.api.dsl.Specialization; //导入依赖的package包/类
@Specialization(guards = {"isResultUsed()", "!isFarRefRcvr(args)", "!isPromiseRcvr(args)"})
public final SPromise toNearRefWithResultPromise(final Object[] args) {
  Actor current = EventualMessage.getActorCurrentMessageIsExecutionOn();

  SPromise result = SPromise.createPromise(current,
      false, promiseResolutionBreakpoint.executeShouldHalt(), source);
  SResolver resolver = SPromise.createResolver(result);

  DirectMessage msg = new DirectMessage(current, selector, args, current,
      resolver, onReceive,
      messageReceiverBreakpoint.executeShouldHalt(),
      promiseResolverBreakpoint.executeShouldHalt());

  if (VmSettings.ACTOR_TRACING) {
    ActorExecutionTrace.sendOperation(SendOp.ACTOR_MSG, msg.getMessageId(),
        current.getId());
  }
  current.send(msg, actorPool);

  return result;
}
 
开发者ID:smarr,项目名称:SOMns,代码行数:22,代码来源:EventualSendNode.java

示例6: doUncached

import com.oracle.truffle.api.dsl.Specialization; //导入依赖的package包/类
@Specialization(replaces = "doCachedWithoutArgArr", guards = "argsArr == null")
@TruffleBoundary
public Object doUncached(final Object receiver, final SSymbol selector,
    final Object argsArr,
    @Cached("create()") final IndirectCallNode call) {
  SClass rcvrClass = Types.getClassOf(receiver);
  Dispatchable invokable = rcvrClass.lookupMessage(selector, AccessModifier.PUBLIC);

  Object[] arguments = {receiver};
  if (invokable != null) {
    return invokable.invoke(call, arguments);
  } else {
    return GenericDispatchNode.performDnu(arguments, receiver,
        rcvrClass, selector, call);
  }
}
 
开发者ID:smarr,项目名称:SOMns,代码行数:17,代码来源:AbstractSymbolDispatch.java

示例7: readObject

import com.oracle.truffle.api.dsl.Specialization; //导入依赖的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

示例8: writeLong

import com.oracle.truffle.api.dsl.Specialization; //导入依赖的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

示例9: writeBoolean

import com.oracle.truffle.api.dsl.Specialization; //导入依赖的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

示例10: write

import com.oracle.truffle.api.dsl.Specialization; //导入依赖的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

示例11: read

import com.oracle.truffle.api.dsl.Specialization; //导入依赖的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

示例12: doDirect

import com.oracle.truffle.api.dsl.Specialization; //导入依赖的package包/类
@Specialization(limit = "INLINE_CACHE_SIZE",
                guards = "callTarget == cachedCallTarget")
public static Object doDirect(VirtualFrame frame, CallTarget callTarget, Object[] arguments,
                       @Cached("callTarget") CallTarget cachedCallTarget,
                       @Cached("create(cachedCallTarget)") DirectCallNode callNode) {
    return callNode.call(arguments);
}
 
开发者ID:ragnard,项目名称:shen-truffle,代码行数:8,代码来源:DispatchNode.java

示例13: open

import com.oracle.truffle.api.dsl.Specialization; //导入依赖的package包/类
@Specialization(rewriteOn = FrameSlotTypeException.class)
@CompilerDirectives.TruffleBoundary
public Closeable open(String path, Symbol direction) throws FrameSlotTypeException {
    File file = new File(path);
    if (!file.isAbsolute()) {
        MaterializedFrame globals = this.getContext().getGlobalFrame();
        FrameSlot homeDirectorySlot = globals.getFrameDescriptor().findFrameSlot("*home-directory*");
        String homeDirectory = (String) globals.getObject(homeDirectorySlot);
        file = new File(homeDirectory, path);
        //throw new RuntimeException("not implemented");
    }

    //System.out.println(file.getAbsoluteFile());

    try {
        switch (direction.getName()) {
            case "in":
                return new BufferedInputStream(new FileInputStream(file));
            case "out":
                return new BufferedOutputStream(new FileOutputStream(file));
        }
    } catch (FileNotFoundException e) {
        throw new RuntimeException("file not found:" + e);
    }

    throw new IllegalArgumentException("invalid direction");
}
 
开发者ID:ragnard,项目名称:shen-truffle,代码行数:28,代码来源:Open.java

示例14: close

import com.oracle.truffle.api.dsl.Specialization; //导入依赖的package包/类
@Specialization
public Object close(Closeable stream) {
    try {
        stream.close();
    } catch (IOException e) {
        throw new RuntimeException("error closing stream:" + e);
    }
    // TODO: empty list?
    return null;
}
 
开发者ID:ragnard,项目名称:shen-truffle,代码行数:11,代码来源:Close.java

示例15: writeByte

import com.oracle.truffle.api.dsl.Specialization; //导入依赖的package包/类
@Specialization
public long writeByte(long value, OutputStream stream) {
    try {
        stream.write((int) value);
        stream.flush();
        return value;
    } catch (IOException e) {
        throw new RuntimeException("write-byte: " + e);
    }
}
 
开发者ID:ragnard,项目名称:shen-truffle,代码行数:11,代码来源:WriteByte.java


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