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