|
|
|
@ -683,7 +683,7 @@ public class Enhancer extends AbstractClassGenerator { |
|
|
|
|
|
|
|
|
|
|
|
ClassEmitter e = new ClassEmitter(v); |
|
|
|
ClassEmitter e = new ClassEmitter(v); |
|
|
|
if (currentData == null) { |
|
|
|
if (currentData == null) { |
|
|
|
e.begin_class(Constants.V1_2, |
|
|
|
e.begin_class(Constants.V1_8, |
|
|
|
Constants.ACC_PUBLIC, |
|
|
|
Constants.ACC_PUBLIC, |
|
|
|
getClassName(), |
|
|
|
getClassName(), |
|
|
|
Type.getType(sc), |
|
|
|
Type.getType(sc), |
|
|
|
@ -693,7 +693,7 @@ public class Enhancer extends AbstractClassGenerator { |
|
|
|
Constants.SOURCE_FILE); |
|
|
|
Constants.SOURCE_FILE); |
|
|
|
} |
|
|
|
} |
|
|
|
else { |
|
|
|
else { |
|
|
|
e.begin_class(Constants.V1_2, |
|
|
|
e.begin_class(Constants.V1_8, |
|
|
|
Constants.ACC_PUBLIC, |
|
|
|
Constants.ACC_PUBLIC, |
|
|
|
getClassName(), |
|
|
|
getClassName(), |
|
|
|
null, |
|
|
|
null, |
|
|
|
@ -1118,7 +1118,7 @@ public class Enhancer extends AbstractClassGenerator { |
|
|
|
CodeEmitter e = ce.begin_method(Constants.ACC_PUBLIC, NEW_INSTANCE, null); |
|
|
|
CodeEmitter e = ce.begin_method(Constants.ACC_PUBLIC, NEW_INSTANCE, null); |
|
|
|
Type thisType = getThisType(e); |
|
|
|
Type thisType = getThisType(e); |
|
|
|
e.load_arg(0); |
|
|
|
e.load_arg(0); |
|
|
|
e.invoke_static(thisType, SET_THREAD_CALLBACKS); |
|
|
|
e.invoke_static(thisType, SET_THREAD_CALLBACKS, false); |
|
|
|
emitCommonNewInstance(e); |
|
|
|
emitCommonNewInstance(e); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -1137,7 +1137,7 @@ public class Enhancer extends AbstractClassGenerator { |
|
|
|
e.dup(); |
|
|
|
e.dup(); |
|
|
|
e.invoke_constructor(thisType); |
|
|
|
e.invoke_constructor(thisType); |
|
|
|
e.aconst_null(); |
|
|
|
e.aconst_null(); |
|
|
|
e.invoke_static(thisType, SET_THREAD_CALLBACKS); |
|
|
|
e.invoke_static(thisType, SET_THREAD_CALLBACKS, false); |
|
|
|
e.return_value(); |
|
|
|
e.return_value(); |
|
|
|
e.end_method(); |
|
|
|
e.end_method(); |
|
|
|
} |
|
|
|
} |
|
|
|
@ -1156,7 +1156,7 @@ public class Enhancer extends AbstractClassGenerator { |
|
|
|
e.push(0); |
|
|
|
e.push(0); |
|
|
|
e.load_arg(0); |
|
|
|
e.load_arg(0); |
|
|
|
e.aastore(); |
|
|
|
e.aastore(); |
|
|
|
e.invoke_static(getThisType(e), SET_THREAD_CALLBACKS); |
|
|
|
e.invoke_static(getThisType(e), SET_THREAD_CALLBACKS, false); |
|
|
|
break; |
|
|
|
break; |
|
|
|
default: |
|
|
|
default: |
|
|
|
e.throw_exception(ILLEGAL_STATE_EXCEPTION, "More than one callback object required"); |
|
|
|
e.throw_exception(ILLEGAL_STATE_EXCEPTION, "More than one callback object required"); |
|
|
|
@ -1168,7 +1168,7 @@ public class Enhancer extends AbstractClassGenerator { |
|
|
|
final CodeEmitter e = ce.begin_method(Constants.ACC_PUBLIC, MULTIARG_NEW_INSTANCE, null); |
|
|
|
final CodeEmitter e = ce.begin_method(Constants.ACC_PUBLIC, MULTIARG_NEW_INSTANCE, null); |
|
|
|
final Type thisType = getThisType(e); |
|
|
|
final Type thisType = getThisType(e); |
|
|
|
e.load_arg(2); |
|
|
|
e.load_arg(2); |
|
|
|
e.invoke_static(thisType, SET_THREAD_CALLBACKS); |
|
|
|
e.invoke_static(thisType, SET_THREAD_CALLBACKS, false); |
|
|
|
e.new_instance(thisType); |
|
|
|
e.new_instance(thisType); |
|
|
|
e.dup(); |
|
|
|
e.dup(); |
|
|
|
e.load_arg(0); |
|
|
|
e.load_arg(0); |
|
|
|
@ -1191,7 +1191,7 @@ public class Enhancer extends AbstractClassGenerator { |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
e.aconst_null(); |
|
|
|
e.aconst_null(); |
|
|
|
e.invoke_static(thisType, SET_THREAD_CALLBACKS); |
|
|
|
e.invoke_static(thisType, SET_THREAD_CALLBACKS, false); |
|
|
|
e.return_value(); |
|
|
|
e.return_value(); |
|
|
|
e.end_method(); |
|
|
|
e.end_method(); |
|
|
|
} |
|
|
|
} |
|
|
|
|