FieldInfo getFieldInfo(String name) { FieldInfo field = (FieldInfo)fieldInfo.get(name); if (field == null) { throw new IllegalArgumentException("Field " + name + " is not declared in " + getClassType().getClassName()); } return field; }
public void invoke_static_this(Signature sig) { invoke_static(ce.getClassType(), sig); }
public void checkcast_this() { checkcast(ce.getClassType()); }
public void invoke_virtual_this(Signature sig) { invoke_virtual(ce.getClassType(), sig); }
public void instance_of_this() { instance_of(ce.getClassType()); }
public void invoke_constructor_this() { invoke_constructor(ce.getClassType()); }
public void invoke_constructor_this(Signature sig) { invoke_constructor(ce.getClassType(), sig); }
public void new_instance_this() { new_instance(ce.getClassType()); }
public static void load_class_this(CodeEmitter e) { load_class_helper(e, e.getClassEmitter().getClassType()); }
public void getfield(String name) { ClassEmitter.FieldInfo info = ce.getFieldInfo(name); int opcode = TypeUtils.isStatic(info.access) ? Constants.GETSTATIC : Constants.GETFIELD; emit_field(opcode, ce.getClassType(), name, info.type); }
public void putfield(String name) { ClassEmitter.FieldInfo info = ce.getFieldInfo(name); int opcode = TypeUtils.isStatic(info.access) ? Constants.PUTSTATIC : Constants.PUTFIELD; emit_field(opcode, ce.getClassType(), name, info.type); }
private static void load_class_helper(CodeEmitter e, final Type type) { if (e.isStaticHook()) { // have to fall back on non-optimized load e.push(TypeUtils.emulateClassGetName(type)); e.invoke_static(Constants.TYPE_CLASS, FOR_NAME); } else { ClassEmitter ce = e.getClassEmitter(); String typeName = TypeUtils.emulateClassGetName(type); // TODO: can end up with duplicated field names when using chained transformers; incorporate static hook # somehow String fieldName = "CGLIB$load_class$" + TypeUtils.escapeType(typeName); if (!ce.isFieldDeclared(fieldName)) { ce.declare_field(Constants.PRIVATE_FINAL_STATIC, fieldName, Constants.TYPE_CLASS, null); CodeEmitter hook = ce.getStaticHook(); hook.push(typeName); hook.invoke_static(Constants.TYPE_CLASS, FOR_NAME); hook.putstatic(ce.getClassType(), fieldName, Constants.TYPE_CLASS); } e.getfield(fieldName); } }
FieldInfo getFieldInfo(String name) { FieldInfo field = (FieldInfo)fieldInfo.get(name); if (field == null) { throw new IllegalArgumentException("Field " + name + " is not declared in " + getClassType().getClassName()); } return field; }
public void invoke_constructor_this() { invoke_constructor(ce.getClassType()); }
public void invoke_virtual_this(Signature sig) { invoke_virtual(ce.getClassType(), sig); }
public void invoke_constructor_this(Signature sig) { invoke_constructor(ce.getClassType(), sig); }
public void new_instance_this() { new_instance(ce.getClassType()); }
public void instance_of_this() { instance_of(ce.getClassType()); }
public void getfield(String name) { ClassEmitter.FieldInfo info = ce.getFieldInfo(name); int opcode = TypeUtils.isStatic(info.access) ? Constants.GETSTATIC : Constants.GETFIELD; emit_field(opcode, ce.getClassType(), name, info.type); }
public void putfield(String name) { ClassEmitter.FieldInfo info = ce.getFieldInfo(name); int opcode = TypeUtils.isStatic(info.access) ? Constants.PUTSTATIC : Constants.PUTFIELD; emit_field(opcode, ce.getClassType(), name, info.type); }