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


Java RuntimeNode.Request方法代码示例

本文整理汇总了Java中jdk.nashorn.internal.ir.RuntimeNode.Request方法的典型用法代码示例。如果您正苦于以下问题:Java RuntimeNode.Request方法的具体用法?Java RuntimeNode.Request怎么用?Java RuntimeNode.Request使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在jdk.nashorn.internal.ir.RuntimeNode的用法示例。


在下文中一共展示了RuntimeNode.Request方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: enterRuntimeNode

import jdk.nashorn.internal.ir.RuntimeNode; //导入方法依赖的package包/类
@Override
public boolean enterRuntimeNode(final RuntimeNode runtimeNode) {
    final RuntimeNode.Request req = runtimeNode.getRequest();

    if (req == RuntimeNode.Request.DEBUGGER) {
        enterDefault(runtimeNode);
        type("DebuggerStatement");
        return leave();
    }

    return false;
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:13,代码来源:JSONWriter.java

示例2: dynamicRuntimeCall

import jdk.nashorn.internal.ir.RuntimeNode; //导入方法依赖的package包/类
/**
 * Generate a dynamic call for a runtime node
 *
 * @param name       tag for the invoke dynamic for this runtime node
 * @param returnType return type
 * @param request    RuntimeNode request
 *
 * @return the method emitter
 */
MethodEmitter dynamicRuntimeCall(final String name, final Type returnType, final RuntimeNode.Request request) {
    debug("dynamic_runtime_call", name, "args=", request.getArity(), "returnType=", returnType);
    final String signature = getDynamicSignature(returnType, request.getArity());
    debug("   signature", signature);
    method.visitInvokeDynamicInsn(name, signature, RUNTIMEBOOTSTRAP);
    pushType(returnType);

    return this;
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:19,代码来源:MethodEmitter.java

示例3: specializationCheck

import jdk.nashorn.internal.ir.RuntimeNode; //导入方法依赖的package包/类
private boolean specializationCheck(final RuntimeNode.Request request, final Expression node, final List<Expression> args) {
    if (!request.canSpecialize()) {
        return false;
    }

    assert args.size() == 2;
    final Type returnType = node.getType();

    load(args.get(0));
    load(args.get(1));

    Request finalRequest = request;

    //if the request is a comparison, i.e. one that can be reversed
    //it keeps its semantic, but make sure that the object comes in
    //last
    final Request reverse = Request.reverse(request);
    if (method.peekType().isObject() && reverse != null) { //rhs is object
        if (!method.peekType(1).isObject()) { //lhs is not object
            method.swap(); //prefer object as lhs
            finalRequest = reverse;
        }
    }

    method.dynamicRuntimeCall(
            new SpecializedRuntimeNode(
                finalRequest,
                new Type[] {
                    method.peekType(1),
                    method.peekType()
                },
                returnType).getInitialName(),
            returnType,
            finalRequest);

    method.convert(node.getType());
    method.store(node.getSymbol());

    return true;
}
 
开发者ID:RedlineResearch,项目名称:OLD-OpenJDK8,代码行数:41,代码来源:CodeGenerator.java

示例4: leaveCmp

import jdk.nashorn.internal.ir.RuntimeNode; //导入方法依赖的package包/类
/**
 * Exit a comparison node and do the appropriate replacements. We need to introduce runtime
 * nodes late for comparisons as types aren't known until the last minute
 *
 * Both compares and adds may turn into runtimes node at this level as when we first bump
 * into the op in Attr, we may type it according to what we know there, which may be wrong later
 *
 * e.g. i (int) < 5 -> normal compare
 *     i = object
 *  then the post pass that would add the conversion to the 5 needs to
 *
 * @param binaryNode binary node to leave
 * @param request    runtime request
 * @return lowered cmp node
 */
@SuppressWarnings("fallthrough")
private Node leaveCmp(final BinaryNode binaryNode, final RuntimeNode.Request request) {
    final Expression lhs    = binaryNode.lhs();
    final Expression rhs    = binaryNode.rhs();

    Type widest = Type.widest(lhs.getType(), rhs.getType());

    boolean newRuntimeNode = false, finalized = false;
    switch (request) {
    case EQ_STRICT:
    case NE_STRICT:
        if (lhs.getType().isBoolean() != rhs.getType().isBoolean()) {
            newRuntimeNode = true;
            widest = Type.OBJECT;
            finalized = true;
        }
        //fallthru
    default:
        if (newRuntimeNode || widest.isObject()) {
            return new RuntimeNode(binaryNode, request).setIsFinal(finalized);
        }
        break;
    }

    return binaryNode.setLHS(convert(lhs, widest)).setRHS(convert(rhs, widest));
}
 
开发者ID:wro4j,项目名称:nashorn-backport,代码行数:42,代码来源:FinalizeTypes.java

示例5: SpecializedRuntimeNode

import jdk.nashorn.internal.ir.RuntimeNode; //导入方法依赖的package包/类
/**
 * Constructor.
 *
 * @param request        runtime node request to specialize
 * @param parameterTypes parameter types of the call site
 * @param returnType     return type of the call site
 */
SpecializedRuntimeNode(final RuntimeNode.Request request, final Type[] parameterTypes, final Type returnType) {
    this.request        = request;
    this.parameterTypes = parameterTypes;
    this.returnType     = returnType;
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:13,代码来源:RuntimeCallSite.java


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