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

Java ArrayType类代码示例

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

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



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

示例1: getArrayType

import jdk.nashorn.internal.codegen.types.ArrayType; //导入依赖的package包/类
private static ArrayType getArrayType(final Type elementType) {
    if (elementType.isInteger()) {
        return Type.INT_ARRAY;
    } else if (elementType.isLong()) {
        return Type.LONG_ARRAY;
    } else if (elementType.isNumeric()) {
        return Type.NUMBER_ARRAY;
    } else {
        return Type.OBJECT_ARRAY;
    }
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:12,代码来源:LiteralNode.java


示例2: getArrayType

import jdk.nashorn.internal.codegen.types.ArrayType; //导入依赖的package包/类
private static ArrayType getArrayType(final Type elementType) {
    if (elementType.isInteger()) {
        return Type.INT_ARRAY;
    } else if (elementType.isNumeric()) {
        return Type.NUMBER_ARRAY;
    } else {
        return Type.OBJECT_ARRAY;
    }
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:10,代码来源:LiteralNode.java


示例3: loadArray

import jdk.nashorn.internal.codegen.types.ArrayType; //导入依赖的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


示例4: globalAllocateArray

import jdk.nashorn.internal.codegen.types.ArrayType; //导入依赖的package包/类
private MethodEmitter globalAllocateArray(final ArrayType type) {
    //make sure the native array is treated as an array type
    if (Kaziranga.isKaziranga()) {
        return method.invokestatic(GLOBAL_OBJECT, "allocate", "(" + type.getDescriptor() + ")Lcom/github/malaporte/kaziranga/jdk/nashorn/internal/objects/NativeArray;");
    } else {
        return method.invokestatic(GLOBAL_OBJECT, "allocate", "(" + type.getDescriptor() + ")Ljdk/nashorn/internal/objects/NativeArray;");
    }
}
 
开发者ID:malaporte,项目名称:kaziranga,代码行数:9,代码来源:CodeGenerator.java


示例5: getArrayType

import jdk.nashorn.internal.codegen.types.ArrayType; //导入依赖的package包/类
/**
 * Get the array element type as Java format, e.g. [I
 * @return array element type
 */
public ArrayType getArrayType() {
    if (elementType.isInteger()) {
        return Type.INT_ARRAY;
    } else if (elementType.isLong()) {
        return Type.LONG_ARRAY;
    } else if (elementType.isNumeric()) {
        return Type.NUMBER_ARRAY;
    } else {
        return Type.OBJECT_ARRAY;
    }
}
 
开发者ID:RedlineResearch,项目名称:OLD-OpenJDK8,代码行数:16,代码来源:LiteralNode.java


示例6: loadLiteral

import jdk.nashorn.internal.codegen.types.ArrayType; //导入依赖的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


示例7: globalAllocateArray

import jdk.nashorn.internal.codegen.types.ArrayType; //导入依赖的package包/类
private MethodEmitter globalAllocateArray(final ArrayType type) {
    //make sure the native array is treated as an array type
    return method.invokestatic(GLOBAL_OBJECT, "allocate", "(" + type.getDescriptor() + ")Ljdk/nashorn/internal/objects/NativeArray;");
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:5,代码来源:CodeGenerator.java


示例8: loadLiteral

import jdk.nashorn.internal.codegen.types.ArrayType; //导入依赖的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


示例9: loadArray

import jdk.nashorn.internal.codegen.types.ArrayType; //导入依赖的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
 *
 * @return the method generator that was used
 */
private MethodEmitter loadArray(final ArrayLiteralNode arrayLiteralNode, final ArrayType arrayType) {
    assert arrayType == Type.INT_ARRAY || arrayType == Type.LONG_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 Class<?>        type     = arrayType.getTypeClass();
    final List<ArrayUnit> units    = arrayLiteralNode.getUnits();

    loadConstant(presets);

    final Type elementType = arrayType.getElementType();

    if (units != null) {
        final MethodEmitter savedMethod     = method;
        final FunctionNode  currentFunction = lc.getCurrentFunction();

        for (final ArrayUnit arrayUnit : units) {
            unit = lc.pushCompileUnit(arrayUnit.getCompileUnit());

            final String className = unit.getUnitClassName();
            final String name      = currentFunction.uniqueName(SPLIT_PREFIX.symbolName());
            final String signature = methodDescriptor(type, ScriptFunction.class, Object.class, ScriptObject.class, type);

            final MethodEmitter me = unit.getClassEmitter().method(EnumSet.of(Flag.PUBLIC, Flag.STATIC), name, signature);
            method = lc.pushMethodEmitter(me);

            method.setFunctionNode(currentFunction);
            method.begin();

            fixScopeSlot(currentFunction);

            method.load(arrayType, SPLIT_ARRAY_ARG.slot());

            for (int i = arrayUnit.getLo(); i < arrayUnit.getHi(); i++) {
                storeElement(nodes, elementType, postsets[i]);
            }

            method._return();
            method.end();
            method = lc.popMethodEmitter(me);

            assert method == savedMethod;
            method.loadCompilerConstant(CALLEE);
            method.swap();
            method.loadCompilerConstant(THIS);
            method.swap();
            method.loadCompilerConstant(SCOPE);
            method.swap();
            method.invokestatic(className, name, signature);

            unit = lc.popCompileUnit(unit);
        }

        return method;
    }

    for (final int postset : postsets) {
        storeElement(nodes, elementType, postset);
    }

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


示例10: newarray

import jdk.nashorn.internal.codegen.types.ArrayType; //导入依赖的package包/类
/**
 * Instantiate a new array given a length that is popped
 * from the stack and the array type
 *
 * @param arrayType the type of the array
 *
 * @return the method emitter
 */
MethodEmitter newarray(final ArrayType arrayType) {
    debug("newarray ", "arrayType=", arrayType);
    popType(Type.INT); //LENGTH
    pushType(arrayType.newarray(method));
    return this;
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:15,代码来源:MethodEmitter.java


示例11: multinewarray

import jdk.nashorn.internal.codegen.types.ArrayType; //导入依赖的package包/类
/**
 * Instantiate a multidimensional array with a given number of dimensions.
 * On the stack are dim lengths of the sub arrays.
 *
 * @param arrayType type of the array
 * @param dims      number of dimensions
 *
 * @return the method emitter
 */
MethodEmitter multinewarray(final ArrayType arrayType, final int dims) {
    debug("multianewarray ", arrayType, dims);
    for (int i = 0; i < dims; i++) {
        popType(Type.INT); //LENGTH
    }
    pushType(arrayType.newarray(method, dims));
    return this;
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:18,代码来源:MethodEmitter.java



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

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