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

Java ArrayLiteralNode类代码示例

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

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



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

示例1: enterLiteralNode

import jdk.nashorn.internal.ir.LiteralNode.ArrayLiteralNode; //导入依赖的package包/类
@SuppressWarnings("rawtypes")
@Override
public boolean enterLiteralNode(final LiteralNode literalNode) {
    if (literalNode instanceof ArrayLiteralNode) {
        final ArrayLiteralNode arrayLiteralNode = (ArrayLiteralNode)literalNode;
        final Expression[]     array            = arrayLiteralNode.getValue();
        final Type             elementType      = arrayLiteralNode.getElementType();

        for (int i = 0; i < array.length; i++) {
            final Node element = array[i];
            if (element != null) {
                array[i] = convert((Expression)element.accept(this), elementType);
            }
        }
    }

    return false;
}
 
开发者ID:wro4j,项目名称:nashorn-backport,代码行数:19,代码来源:FinalizeTypes.java


示例2: leaveLiteralNode

import jdk.nashorn.internal.ir.LiteralNode.ArrayLiteralNode; //导入依赖的package包/类
@Override
public Node leaveLiteralNode(final LiteralNode<?> node) {
    if (node instanceof ArrayLiteralNode) {
        final ArrayLiteralNode aln = (ArrayLiteralNode)node;
        if (aln.getUnits() == null) {
            return node;
        }
        final List<ArrayUnit> newArrayUnits = new ArrayList<>();
        for (final ArrayUnit au : aln.getUnits()) {
            newArrayUnits.add(new ArrayUnit(getExistingReplacement(au), au.getLo(), au.getHi()));
        }
        return aln.setUnits(lc, newArrayUnits);
    }
    return node;
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:16,代码来源:ReplaceCompileUnits.java


示例3: isSplitArray

import jdk.nashorn.internal.ir.LiteralNode.ArrayLiteralNode; //导入依赖的package包/类
private static boolean isSplitArray(final LexicalContextNode expr) {
    if(!(expr instanceof ArrayLiteralNode)) {
        return false;
    }
    final List<ArrayUnit> units = ((ArrayLiteralNode)expr).getUnits();
    return !(units == null || units.isEmpty());
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:8,代码来源:AssignSymbols.java


示例4: enterLiteralNode

import jdk.nashorn.internal.ir.LiteralNode.ArrayLiteralNode; //导入依赖的package包/类
@SuppressWarnings("rawtypes")
@Override
public boolean enterLiteralNode(final LiteralNode literalNode) {
    weight += LITERAL_WEIGHT;

    if (literalNode instanceof ArrayLiteralNode) {
        final ArrayLiteralNode arrayLiteralNode = (ArrayLiteralNode)literalNode;
        final Node[]           value            = arrayLiteralNode.getValue();
        final int[]            postsets         = arrayLiteralNode.getPostsets();
        final List<ArrayUnit>  units            = arrayLiteralNode.getUnits();

        if (units == null) {
            for (final int postset : postsets) {
                weight += AASTORE_WEIGHT;
                final Node element = value[postset];

                if (element != null) {
                    element.accept(this);
                }
            }
        }

        return false;
    }

    return true;
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:28,代码来源:WeighNodes.java


示例5: leaveLiteralNode

import jdk.nashorn.internal.ir.LiteralNode.ArrayLiteralNode; //导入依赖的package包/类
@Override
public Node leaveLiteralNode(final LiteralNode<?> node) {
    if (node instanceof ArrayLiteralNode) {
        final ArrayLiteralNode aln = (ArrayLiteralNode)node;
        if (aln.getSplitRanges() == null) {
            return node;
        }
        final List<Splittable.SplitRange> newArrayUnits = new ArrayList<>();
        for (final Splittable.SplitRange au : aln.getSplitRanges()) {
            newArrayUnits.add(new Splittable.SplitRange(getExistingReplacement(au), au.getLow(), au.getHigh()));
        }
        return aln.setSplitRanges(lc, newArrayUnits);
    }
    return node;
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:16,代码来源:ReplaceCompileUnits.java


示例6: enterForNode

import jdk.nashorn.internal.ir.LiteralNode.ArrayLiteralNode; //导入依赖的package包/类
@Override
public boolean enterForNode(final ForNode forNode) {
    if (es6 && (forNode.getInit() instanceof ObjectNode || forNode.getInit() instanceof ArrayLiteralNode)) {
        throwNotImplementedYet("es6.destructuring", forNode);
    }
    return super.enterForNode(forNode);
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:8,代码来源:Lower.java


示例7: enterASSIGN

import jdk.nashorn.internal.ir.LiteralNode.ArrayLiteralNode; //导入依赖的package包/类
@Override
public boolean enterASSIGN(BinaryNode binaryNode) {
    if (es6 && (binaryNode.lhs() instanceof ObjectNode || binaryNode.lhs() instanceof ArrayLiteralNode)) {
        throwNotImplementedYet("es6.destructuring", binaryNode);
    }
    return super.enterASSIGN(binaryNode);
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:8,代码来源:Lower.java


示例8: enterLiteralNode

import jdk.nashorn.internal.ir.LiteralNode.ArrayLiteralNode; //导入依赖的package包/类
@Override
public boolean enterLiteralNode(final LiteralNode<?> literalNode) {
    if (literalNode instanceof ArrayLiteralNode) {
        final List<Expression> expressions = ((ArrayLiteralNode)literalNode).getElementExpressions();
        if (expressions != null) {
            visitExpressions(expressions);
        }
    }
    pushExpressionType(literalNode);
    return false;
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:12,代码来源:LocalVariableTypesCalculator.java


示例9: loadArray

import jdk.nashorn.internal.ir.LiteralNode.ArrayLiteralNode; //导入依赖的package包/类
/**
 * Load a list of nodes as an array of a specific type
 * The array will contain the visited nodes.
 *
 * @param arrayLiteralNode the array of contents
 * @param arrayType        the type of the array, e.g. ARRAY_NUMBER or ARRAY_OBJECT
 */
private void loadArray(final ArrayLiteralNode arrayLiteralNode, final ArrayType arrayType) {
    assert arrayType == Type.INT_ARRAY || arrayType == Type.NUMBER_ARRAY || arrayType == Type.OBJECT_ARRAY;

    final Expression[]     nodes    = arrayLiteralNode.getValue();
    final Object           presets  = arrayLiteralNode.getPresets();
    final int[]            postsets = arrayLiteralNode.getPostsets();
    final List<Splittable.SplitRange> ranges   = arrayLiteralNode.getSplitRanges();

    loadConstant(presets);

    final Type elementType = arrayType.getElementType();

    if (ranges != null) {

        loadSplitLiteral(new SplitLiteralCreator() {
            @Override
            public void populateRange(final MethodEmitter method, final Type type, final int slot, final int start, final int end) {
                for (int i = start; i < end; i++) {
                    method.load(type, slot);
                    storeElement(nodes, elementType, postsets[i]);
                }
                method.load(type, slot);
            }
        }, ranges, arrayType);

        return;
    }

    if(postsets.length > 0) {
        final int arraySlot = method.getUsedSlotsWithLiveTemporaries();
        method.storeTemp(arrayType, arraySlot);
        for (final int postset : postsets) {
            method.load(arrayType, arraySlot);
            storeElement(nodes, elementType, postset);
        }
        method.load(arrayType, arraySlot);
    }
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:46,代码来源:CodeGenerator.java


示例10: enterLiteralNode

import jdk.nashorn.internal.ir.LiteralNode.ArrayLiteralNode; //导入依赖的package包/类
@SuppressWarnings("rawtypes")
@Override
public boolean enterLiteralNode(final LiteralNode literalNode) {
    weight += LITERAL_WEIGHT;

    if (literalNode instanceof ArrayLiteralNode) {
        final ArrayLiteralNode arrayLiteralNode = (ArrayLiteralNode)literalNode;
        final Node[]           value            = arrayLiteralNode.getValue();
        final int[]            postsets         = arrayLiteralNode.getPostsets();
        final List<Splittable.SplitRange>  units            = arrayLiteralNode.getSplitRanges();

        if (units == null) {
            for (final int postset : postsets) {
                weight += AASTORE_WEIGHT;
                final Node element = value[postset];

                if (element != null) {
                    element.accept(this);
                }
            }
        }

        return false;
    }

    return true;
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:28,代码来源:WeighNodes.java


示例11: enterLiteralNode

import jdk.nashorn.internal.ir.LiteralNode.ArrayLiteralNode; //导入依赖的package包/类
@SuppressWarnings("rawtypes")
@Override
public boolean enterLiteralNode(final LiteralNode literalNode) {
    if (literalNode instanceof LiteralNode.PrimitiveLiteralNode) {
        weight += CONST_WEIGHT;
        return false;
    }

    weight += LITERAL_WEIGHT;

    if (literalNode instanceof ArrayLiteralNode) {
        final ArrayLiteralNode arrayLiteralNode = (ArrayLiteralNode)literalNode;
        final Node[]           value            = arrayLiteralNode.getValue();
        final int[]            postsets         = arrayLiteralNode.getPostsets();
        final List<Splittable.SplitRange>  units            = arrayLiteralNode.getSplitRanges();

        if (units == null) {
            for (final int postset : postsets) {
                weight += AASTORE_WEIGHT;
                final Node element = value[postset];

                if (element != null) {
                    element.accept(this);
                }
            }
        }

        return false;
    }

    return true;
}
 
开发者ID:JetBrains,项目名称:jdk8u_nashorn,代码行数:33,代码来源:WeighNodes.java


示例12: eval

import jdk.nashorn.internal.ir.LiteralNode.ArrayLiteralNode; //导入依赖的package包/类
@Override
protected LiteralNode<?> eval() {
    final Node rhsNode = parent.getExpression();

    if (!(rhsNode instanceof LiteralNode)) {
        return null;
    }

    if (rhsNode instanceof ArrayLiteralNode) {
        return null;
    }

    final LiteralNode<?> rhs = (LiteralNode<?>)rhsNode;
    final Type rhsType = rhs.getType();
    final boolean rhsInteger = rhsType.isInteger() || rhsType.isBoolean();

    LiteralNode<?> literalNode;

    switch (parent.tokenType()) {
    case ADD:
        if (rhsInteger) {
            literalNode = LiteralNode.newInstance(token, finish, rhs.getInt32());
        } else {
            literalNode = LiteralNode.newInstance(token, finish, rhs.getNumber());
        }
        break;
    case SUB:
        if (rhsInteger && rhs.getInt32() != 0) { // @see test/script/basic/minuszero.js
            literalNode = LiteralNode.newInstance(token, finish, -rhs.getInt32());
        } else {
            literalNode = LiteralNode.newInstance(token, finish, -rhs.getNumber());
        }
        break;
    case NOT:
        literalNode = LiteralNode.newInstance(token, finish, !rhs.getBoolean());
        break;
    case BIT_NOT:
        literalNode = LiteralNode.newInstance(token, finish, ~rhs.getInt32());
        break;
    default:
        return null;
    }

    return literalNode;
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:46,代码来源:FoldConstants.java


示例13: loadLiteral

import jdk.nashorn.internal.ir.LiteralNode.ArrayLiteralNode; //导入依赖的package包/类
private void loadLiteral(final LiteralNode<?> node, final TypeBounds resultBounds) {
    final Object value = node.getValue();

    if (value == null) {
        method.loadNull();
    } else if (value instanceof Undefined) {
        method.loadUndefined(resultBounds.within(Type.OBJECT));
    } else if (value instanceof String) {
        final String string = (String)value;

        if (string.length() > MethodEmitter.LARGE_STRING_THRESHOLD / 3) { // 3 == max bytes per encoded char
            loadConstant(string);
        } else {
            method.load(string);
        }
    } else if (value instanceof RegexToken) {
        loadRegex((RegexToken)value);
    } else if (value instanceof Boolean) {
        method.load((Boolean)value);
    } else if (value instanceof Integer) {
        if(!resultBounds.canBeNarrowerThan(Type.OBJECT)) {
            method.load((Integer)value);
            method.convert(Type.OBJECT);
        } else if(!resultBounds.canBeNarrowerThan(Type.NUMBER)) {
            method.load(((Integer)value).doubleValue());
        } else if(!resultBounds.canBeNarrowerThan(Type.LONG)) {
            method.load(((Integer)value).longValue());
        } else {
            method.load((Integer)value);
        }
    } else if (value instanceof Long) {
        if(!resultBounds.canBeNarrowerThan(Type.OBJECT)) {
            method.load((Long)value);
            method.convert(Type.OBJECT);
        } else if(!resultBounds.canBeNarrowerThan(Type.NUMBER)) {
            method.load(((Long)value).doubleValue());
        } else {
            method.load((Long)value);
        }
    } else if (value instanceof Double) {
        if(!resultBounds.canBeNarrowerThan(Type.OBJECT)) {
            method.load((Double)value);
            method.convert(Type.OBJECT);
        } else {
            method.load((Double)value);
        }
    } else if (node instanceof ArrayLiteralNode) {
        final ArrayLiteralNode arrayLiteral = (ArrayLiteralNode)node;
        final ArrayType atype = arrayLiteral.getArrayType();
        loadArray(arrayLiteral, atype);
        globalAllocateArray(atype);
    } else {
        throw new UnsupportedOperationException("Unknown literal for " + node.getClass() + " " + value.getClass() + " " + value);
    }
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:56,代码来源:CodeGenerator.java


示例14: eval

import jdk.nashorn.internal.ir.LiteralNode.ArrayLiteralNode; //导入依赖的package包/类
@Override
protected LiteralNode<?> eval() {
    final Node rhsNode = parent.getExpression();

    if (!(rhsNode instanceof LiteralNode)) {
        return null;
    }

    if (rhsNode instanceof ArrayLiteralNode) {
        return null;
    }

    final LiteralNode<?> rhs = (LiteralNode<?>)rhsNode;
    final Type rhsType = rhs.getType();
    final boolean rhsInteger = rhsType.isInteger() || rhsType.isBoolean();

    LiteralNode<?> literalNode;

    switch (parent.tokenType()) {
    case POS:
        if (rhsInteger) {
            literalNode = LiteralNode.newInstance(token, finish, rhs.getInt32());
        } else if (rhsType.isLong()) {
            literalNode = LiteralNode.newInstance(token, finish, rhs.getLong());
        } else {
            literalNode = LiteralNode.newInstance(token, finish, rhs.getNumber());
        }
        break;
    case NEG:
        if (rhsInteger && rhs.getInt32() != 0) { // @see test/script/basic/minuszero.js
            literalNode = LiteralNode.newInstance(token, finish, -rhs.getInt32());
        } else if (rhsType.isLong() && rhs.getLong() != 0L) {
            literalNode = LiteralNode.newInstance(token, finish, -rhs.getLong());
        } else {
            literalNode = LiteralNode.newInstance(token, finish, -rhs.getNumber());
        }
        break;
    case NOT:
        literalNode = LiteralNode.newInstance(token, finish, !rhs.getBoolean());
        break;
    case BIT_NOT:
        literalNode = LiteralNode.newInstance(token, finish, ~rhs.getInt32());
        break;
    default:
        return null;
    }

    return literalNode;
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:50,代码来源:FoldConstants.java


示例15: loadLiteral

import jdk.nashorn.internal.ir.LiteralNode.ArrayLiteralNode; //导入依赖的package包/类
private void loadLiteral(final LiteralNode<?> node, final TypeBounds resultBounds) {
    final Object value = node.getValue();

    if (value == null) {
        method.loadNull();
    } else if (value instanceof Undefined) {
        method.loadUndefined(resultBounds.within(Type.OBJECT));
    } else if (value instanceof String) {
        final String string = (String)value;

        if (string.length() > MethodEmitter.LARGE_STRING_THRESHOLD / 3) { // 3 == max bytes per encoded char
            loadConstant(string);
        } else {
            method.load(string);
        }
    } else if (value instanceof RegexToken) {
        loadRegex((RegexToken)value);
    } else if (value instanceof Boolean) {
        method.load((Boolean)value);
    } else if (value instanceof Integer) {
        if(!resultBounds.canBeNarrowerThan(Type.OBJECT)) {
            method.load((Integer)value);
            method.convert(Type.OBJECT);
        } else if(!resultBounds.canBeNarrowerThan(Type.NUMBER)) {
            method.load(((Integer)value).doubleValue());
        } else {
            method.load((Integer)value);
        }
    } else if (value instanceof Double) {
        if(!resultBounds.canBeNarrowerThan(Type.OBJECT)) {
            method.load((Double)value);
            method.convert(Type.OBJECT);
        } else {
            method.load((Double)value);
        }
    } else if (node instanceof ArrayLiteralNode) {
        final ArrayLiteralNode arrayLiteral = (ArrayLiteralNode)node;
        final ArrayType atype = arrayLiteral.getArrayType();
        loadArray(arrayLiteral, atype);
        globalAllocateArray(atype);
    } else {
        throw new UnsupportedOperationException("Unknown literal for " + node.getClass() + " " + value.getClass() + " " + value);
    }
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:45,代码来源:CodeGenerator.java


示例16: eval

import jdk.nashorn.internal.ir.LiteralNode.ArrayLiteralNode; //导入依赖的package包/类
@Override
protected LiteralNode<?> eval() {
    final Node rhsNode = parent.getExpression();

    if (!(rhsNode instanceof LiteralNode)) {
        return null;
    }

    if (rhsNode instanceof ArrayLiteralNode) {
        return null;
    }

    final LiteralNode<?> rhs = (LiteralNode<?>)rhsNode;
    final Type rhsType = rhs.getType();
    final boolean rhsInteger = rhsType.isInteger() || rhsType.isBoolean();

    LiteralNode<?> literalNode;

    switch (parent.tokenType()) {
    case ADD:
        if (rhsInteger) {
            literalNode = LiteralNode.newInstance(token, finish, rhs.getInt32());
        } else if (rhsType.isLong()) {
            literalNode = LiteralNode.newInstance(token, finish, rhs.getLong());
        } else {
            literalNode = LiteralNode.newInstance(token, finish, rhs.getNumber());
        }
        break;
    case SUB:
        if (rhsInteger && rhs.getInt32() != 0) { // @see test/script/basic/minuszero.js
            literalNode = LiteralNode.newInstance(token, finish, -rhs.getInt32());
        } else if (rhsType.isLong() && rhs.getLong() != 0L) {
            literalNode = LiteralNode.newInstance(token, finish, -rhs.getLong());
        } else {
            literalNode = LiteralNode.newInstance(token, finish, -rhs.getNumber());
        }
        break;
    case NOT:
        literalNode = LiteralNode.newInstance(token, finish, !rhs.getBoolean());
        break;
    case BIT_NOT:
        literalNode = LiteralNode.newInstance(token, finish, ~rhs.getInt32());
        break;
    default:
        return null;
    }

    return literalNode;
}
 
开发者ID:campolake,项目名称:openjdk9,代码行数:50,代码来源:FoldConstants.java



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
Java ResourcePropertySet类代码示例发布时间:2022-05-22
下一篇:
Java ActionRedirect类代码示例发布时间: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