private String addStaticComparatorField(TypeDesc type) { if (mComparatorFields == null) { mComparatorFields = new IdentityHashMap<TypeDesc, String>(); } String fieldName = mComparatorFields.get(type); if (fieldName != null) { return fieldName; } fieldName = COMPARATOR_FIELD_PREFIX + mComparatorFields.size(); TypeDesc comparatorType = TypeDesc.forClass(Comparator.class); mClassFile.addField(Modifiers.PRIVATE.toStatic(true).toFinal(true), fieldName, comparatorType); if (mStaticInitBuilder == null) { mStaticInitBuilder = new CodeBuilder(mClassFile.addInitializer()); } mStaticInitBuilder.loadConstant(type); mStaticInitBuilder.loadConstant(true); mStaticInitBuilder.invokeStatic (TypeDesc.forClass(Comparators.class), "arrayComparator", comparatorType, new TypeDesc[] {TypeDesc.forClass(Class.class), BOOLEAN}); mStaticInitBuilder.storeStaticField(fieldName, comparatorType); mComparatorFields.put(type, fieldName); return fieldName; }
private String addStaticComparatorField(TypeDesc type) { if (mComparatorFields == null) { mComparatorFields = new IdentityHashMap<TypeDesc, String>(); } String fieldName = mComparatorFields.get(type); if (fieldName != null) { return fieldName; } fieldName = COMPARATOR_FIELD_PREFIX + mComparatorFields.size(); TypeDesc comparatorType = TypeDesc.forClass(Comparator.class); mClassFile.addField(Modifiers.PRIVATE.toStatic(true).toFinal(true), fieldName, comparatorType); if (mStaticInitBuilder == null) { mStaticInitBuilder = new CodeBuilder(mClassFile.addInitializer()); } mStaticInitBuilder.loadConstant(type); mStaticInitBuilder.loadConstant(true); mStaticInitBuilder.invokeStatic (TypeDesc.forClass(Comparators.class), "arrayComparator", comparatorType, new TypeDesc[] {TypeDesc.forClass(Class.class), BOOLEAN}); mStaticInitBuilder.storeStaticField(fieldName, comparatorType); mComparatorFields.put(type, fieldName); return fieldName; }
if (clinit == null) { dis = null; clinit = cf.addInitializer(); } else { dis = new CodeDisassembler(clinit);
CodeBuilder b = new CodeBuilder(cf.addInitializer()); TypeDesc localType = TypeDesc.forClass(ThreadLocal.class);
mi = cf.addInitializer(); b = new CodeBuilder(mi);
mi = cf.addInitializer(); b = new CodeBuilder(mi);
MethodInfo mi = mClassFile.addInitializer(); CodeBuilder b = new CodeBuilder(mi);
MethodInfo mi = mClassFile.addInitializer(); CodeBuilder b = new CodeBuilder(mi);
clinit = new CodeBuilder(mClassFile.addInitializer()); clinit = new CodeBuilder(mClassFile.addInitializer());
clinit = new CodeBuilder(mClassFile.addInitializer()); clinit = new CodeBuilder(mClassFile.addInitializer());