type = type.toArrayType(); isVarArgs[0] = true; list.set(list.size() - 1, type);
/** * Used to describe an array class. */ public ConstantClassInfo(ConstantPool cp, String className, int dim) { super(TAG_CLASS); TypeDesc type = TypeDesc.forClass(className); String desc; if (dim > 0) { while (--dim >= 0) { type = type.toArrayType(); } desc = type.getDescriptor(); } else { desc = className.replace('.', '/'); } mType = type; mNameConstant = cp.addConstantUTF(desc); }
type = type.toArrayType();
type = forClass(name.substring(0, index1)).toArrayType(); } catch (IllegalArgumentException e) { throw invalidName(name);
type = forClass(clazz.getComponentType()).toArrayType(); } else if (clazz.isPrimitive()) { if (clazz == int.class) {
return parseTypeDesc().toArrayType();
TypeDesc objectArrayType = TypeDesc.OBJECT.toArrayType(); TypeDesc[] params = {objectArrayType}; MethodInfo mi = cf.addConstructor(Modifiers.PUBLIC, params); mStringType = TypeDesc.STRING; mObjectType = TypeDesc.OBJECT; mIntArrayType = TypeDesc.INT.toArrayType(); TypeDesc charArrayType = TypeDesc.CHAR.toArrayType(); params = new TypeDesc[]{charArrayType, mIntType, mListType}; mi = cf.addMethod(Modifiers.PUBLIC, "fillMatchResults", null, params);
private void generateAddMatchResult(PatternNode node) { mBuilder.mapLineNumber(++mReferenceLine); mBuilder.loadLocal(mLimitLocal); mBuilder.loadLocal(mResultsLocal); mBuilder.loadConstant(node.mPattern); mBuilder.loadThis(); mBuilder.loadField("mValues", TypeDesc.OBJECT.toArrayType()); mBuilder.loadConstant(node.mOrder); mBuilder.loadFromArray(TypeDesc.OBJECT); mBuilder.loadLocal(mPositionsLocal); mBuilder.loadConstant(node.getWildcardCount() * 2); TypeDesc[] params = { mIntType, mListType, mStringType, mObjectType, mIntArrayType, mIntType }; mBuilder.invokeStatic(PatternMatcher.class.getName(), "addMatchResult", mBooleanType, params); mBuilder.ifZeroComparisonBranch(mReturnLabel, "=="); } }
/** * Used to describe an array class. */ public ConstantClassInfo(ConstantPool cp, String className, int dim) { super(TAG_CLASS); TypeDesc type = TypeDesc.forClass(className); String desc; if (dim > 0) { while (--dim >= 0) { type = type.toArrayType(); } desc = type.getDescriptor(); } else { desc = className.replace('.', '/'); } mType = type; mNameConstant = cp.addConstantUTF(desc); }
TypeDesc comparatorArrayType = comparatorType.toArrayType(); cf.addField(Modifiers.PRIVATE, "mCollators", comparatorArrayType).markSynthetic();
private void defineExtractDataMethod(Map<JDBCStorableProperty<S>, Class<?>> lobLoaderMap) throws SupportException { MethodInfo mi = mClassFile.addMethod (Modifiers.PRIVATE, EXTRACT_DATA_METHOD_NAME, null, new TypeDesc[] {TypeDesc.forClass(ResultSet.class), TypeDesc.INT, TypeDesc.forClass(Lob.class).toArrayType()}); CodeBuilder b = new CodeBuilder(mi); defineExtract(b, b.getParameter(0), b.getParameter(1), b.getParameter(2), mInfo.getDataProperties().values(), lobLoaderMap); b.returnVoid(); }
TypeDesc filterArrayType = filterType.toArrayType(); mSubFilterInitBuilder = new CodeBuilder (mClassFile.addMethod
private void defineExtractDataMethod(Map<JDBCStorableProperty<S>, Class<?>> lobLoaderMap) throws SupportException { MethodInfo mi = mClassFile.addMethod (Modifiers.PRIVATE, EXTRACT_DATA_METHOD_NAME, null, new TypeDesc[] {TypeDesc.forClass(ResultSet.class), TypeDesc.INT, TypeDesc.forClass(Lob.class).toArrayType()}); CodeBuilder b = new CodeBuilder(mi); defineExtract(b, b.getParameter(0), b.getParameter(1), b.getParameter(2), mInfo.getDataProperties().values(), lobLoaderMap); b.returnVoid(); }
(mTypeResolver.resolveClass(root.getRootName(), mRemoteAdmin)); while (--dims >= 0) { type = type.toArrayType();
type = ((ConstantClassInfo)ci).getType().toArrayType(); assembler.newObject(type); } else { assembler.newObject(type.toArrayType()); break;
private void generateAddMatchResult(PatternNode node) { mBuilder.mapLineNumber(++mReferenceLine); mBuilder.loadLocal(mLimitLocal); mBuilder.loadLocal(mResultsLocal); mBuilder.loadConstant(node.mPattern); mBuilder.loadThis(); mBuilder.loadField("mValues", TypeDesc.OBJECT.toArrayType()); mBuilder.loadConstant(node.mOrder); mBuilder.loadFromArray(TypeDesc.OBJECT); mBuilder.loadLocal(mPositionsLocal); mBuilder.loadConstant(node.getWildcardCount() * 2); TypeDesc[] params = { mIntType, mListType, mStringType, mObjectType, mIntArrayType, mIntType }; mBuilder.invokeStatic(PatternMatcher.class.getName(), "addMatchResult", mBooleanType, params); mBuilder.ifZeroComparisonBranch(mReturnLabel, "=="); } }
private void defineExtractAllMethod(Map<JDBCStorableProperty<S>, Class<?>> lobLoaderMap) throws SupportException { MethodInfo mi = mClassFile.addMethod (Modifiers.PRIVATE, EXTRACT_ALL_METHOD_NAME, null, new TypeDesc[] {TypeDesc.forClass(ResultSet.class), TypeDesc.INT}); CodeBuilder b = new CodeBuilder(mi); defineExtract(b, b.getParameter(0), b.getParameter(1), null, mInfo.getPrimaryKeyProperties().values(), lobLoaderMap); // Invoke extract data method to do the rest. b.loadThis(); // Load the ResultSet var. b.loadLocal(b.getParameter(0)); // The offset variable has already been incremented by code generated // by defineExtract, except for the last property. b.loadLocal(b.getParameter(1)); b.loadConstant(1); b.math(Opcode.IADD); b.loadNull(); // No Lobs to update b.invokePrivate(EXTRACT_DATA_METHOD_NAME, null, new TypeDesc[] {TypeDesc.forClass(ResultSet.class), TypeDesc.INT, TypeDesc.forClass(Lob.class).toArrayType()}); b.returnVoid(); }
private void defineExtractAllMethod(Map<JDBCStorableProperty<S>, Class<?>> lobLoaderMap) throws SupportException { MethodInfo mi = mClassFile.addMethod (Modifiers.PRIVATE, EXTRACT_ALL_METHOD_NAME, null, new TypeDesc[] {TypeDesc.forClass(ResultSet.class), TypeDesc.INT}); CodeBuilder b = new CodeBuilder(mi); defineExtract(b, b.getParameter(0), b.getParameter(1), null, mInfo.getPrimaryKeyProperties().values(), lobLoaderMap); // Invoke extract data method to do the rest. b.loadThis(); // Load the ResultSet var. b.loadLocal(b.getParameter(0)); // The offset variable has already been incremented by code generated // by defineExtract, except for the last property. b.loadLocal(b.getParameter(1)); b.loadConstant(1); b.math(Opcode.IADD); b.loadNull(); // No Lobs to update b.invokePrivate(EXTRACT_DATA_METHOD_NAME, null, new TypeDesc[] {TypeDesc.forClass(ResultSet.class), TypeDesc.INT, TypeDesc.forClass(Lob.class).toArrayType()}); b.returnVoid(); }
private void addPropertyAppendCall(CodeBuilder b, StorableProperty property) { b.loadConstant(property.getName()); invokeAppend(b, TypeDesc.STRING); b.loadConstant('='); invokeAppend(b, TypeDesc.CHAR); loadThisProperty(b, property); TypeDesc type = TypeDesc.forClass(property.getType()); if (type.isPrimitive()) { if (type == TypeDesc.BYTE || type == TypeDesc.SHORT) { type = TypeDesc.INT; } } else { if (type != TypeDesc.STRING) { if (type.isArray()) { if (!type.getComponentType().isPrimitive()) { b.invokeStatic("java.util.Arrays", "deepToString", TypeDesc.STRING, new TypeDesc[] {TypeDesc.OBJECT.toArrayType()}); } else { b.invokeStatic("java.util.Arrays", TO_STRING_METHOD_NAME, TypeDesc.STRING, new TypeDesc[] {type}); } } type = TypeDesc.OBJECT; } } invokeAppend(b, type); }
private void addPropertyAppendCall(CodeBuilder b, StorableProperty property) { b.loadConstant(property.getName()); invokeAppend(b, TypeDesc.STRING); b.loadConstant('='); invokeAppend(b, TypeDesc.CHAR); loadThisProperty(b, property); TypeDesc type = TypeDesc.forClass(property.getType()); if (type.isPrimitive()) { if (type == TypeDesc.BYTE || type == TypeDesc.SHORT) { type = TypeDesc.INT; } } else { if (type != TypeDesc.STRING) { if (type.isArray()) { if (!type.getComponentType().isPrimitive()) { b.invokeStatic("java.util.Arrays", "deepToString", TypeDesc.STRING, new TypeDesc[] {TypeDesc.OBJECT.toArrayType()}); } else { b.invokeStatic("java.util.Arrays", TO_STRING_METHOD_NAME, TypeDesc.STRING, new TypeDesc[] {type}); } } type = TypeDesc.OBJECT; } } invokeAppend(b, type); }