Skip to content

Commit eea015b

Browse files
author
Mihail Slavchev
committed
merge master branch
2 parents 6145fe0 + 23e1593 commit eea015b

128 files changed

Lines changed: 3420 additions & 3992 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

binding-generator/Generator/src/com/tns/binding/tests/dummy.java renamed to binding-generator/Generator/src/com/tns/binding/tests/Dummy.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import org.ow2.asmdex.MethodVisitor;
1010
import org.ow2.asmdex.structureCommon.Label;
1111

12-
class dummy
12+
class Dummy
1313
{
1414
public static void dummyMethod(Object thiz, String name, Object... args)
1515
{
@@ -43,7 +43,7 @@ public static void calldummyMethodParams()
4343

4444
public static void callDummyGenMethod()
4545
{
46-
Random val = dummy.<Object, Integer, Random>dummyGenMethod(new Object(), "someName", new Object(), 5);
46+
Random val = Dummy.<Object, Integer, Random>dummyGenMethod(new Object(), "someName", new Object(), 5);
4747

4848
}
4949

binding-generator/Generator/src/com/tns/binding/tests/dumpObject.java renamed to binding-generator/Generator/src/com/tns/binding/tests/DumpObject.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
import org.ow2.asmdex.MethodVisitor;
88
import org.ow2.asmdex.structureCommon.Label;
99

10-
public class dumpObject
10+
public class DumpObject
1111
{
1212

13-
public static void dumpObject(ApplicationWriter aw) {
13+
public static void dump(ApplicationWriter aw) {
1414
ClassVisitor cv;
1515
FieldVisitor fv;
1616
MethodVisitor mv;
@@ -35,6 +35,7 @@ public static void dumpObject(ApplicationWriter aw) {
3535
fv = cv.visitField(org.ow2.asmdex.Opcodes.ACC_PRIVATE, "__initialized", "Z", null, null);
3636
fv.visitEnd();
3737
}
38+
String runtimeClass = "Lcom/tns/Runtime;";
3839
{
3940
mv = cv.visitMethod(org.ow2.asmdex.Opcodes.ACC_PUBLIC + org.ow2.asmdex.Opcodes.ACC_CONSTRUCTOR, "<init>", "V", null, null);
4041
mv.visitCode();
@@ -45,14 +46,14 @@ public static void dumpObject(ApplicationWriter aw) {
4546
Label l0 = new Label();
4647
mv.visitJumpInsn(org.ow2.asmdex.Opcodes.INSN_IF_NEZ, l0, 1, 0);
4748
mv.visitFieldInsn(org.ow2.asmdex.Opcodes.INSN_IPUT_BOOLEAN, "Lcom/tns/java/lang/Object;", "__initialized", "Z", 2, 3);
48-
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, "Lcom/tns/Platform;", "initInstance", "VLjava/lang/Object;", new int[] { 3 });
49+
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, runtimeClass, "initInstance", "VLjava/lang/Object;", new int[] { 3 });
4950
mv.visitLabel(l0);
5051
mv.visitFieldInsn(org.ow2.asmdex.Opcodes.INSN_IGET_BOOLEAN, "Lcom/tns/java/lang/Object;", "__ctorOverridden", "Z", 1, 3);
5152
Label l1 = new Label();
5253
mv.visitJumpInsn(org.ow2.asmdex.Opcodes.INSN_IF_EQZ, l1, 1, 0);
5354
mv.visitVarInsn(org.ow2.asmdex.Opcodes.INSN_CONST_4, 0, 0);
5455
mv.visitStringInsn(org.ow2.asmdex.Opcodes.INSN_CONST_STRING, 1, "init");
55-
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, "Lcom/tns/Platform;", "callJSMethod", "Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;Z[Ljava/lang/Object;", new int[] { 3, 1, 2, 0 });
56+
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, runtimeClass, "callJSMethod", "Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;Z[Ljava/lang/Object;", new int[] { 3, 1, 2, 0 });
5657
mv.visitLabel(l1);
5758
mv.visitInsn(org.ow2.asmdex.Opcodes.INSN_RETURN_VOID);
5859
mv.visitEnd();
@@ -66,15 +67,15 @@ public static void dumpObject(ApplicationWriter aw) {
6667
mv.visitJumpInsn(org.ow2.asmdex.Opcodes.INSN_IF_NEZ, l0, 1, 0);
6768
mv.visitVarInsn(org.ow2.asmdex.Opcodes.INSN_CONST_4, 1, 1);
6869
mv.visitFieldInsn(org.ow2.asmdex.Opcodes.INSN_IPUT_BOOLEAN, "Lcom/tns/java/lang/Object;", "__initialized", "Z", 1, 2);
69-
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, "Lcom/tns/Platform;", "initInstance", "VLjava/lang/Object;", new int[] { 2 });
70+
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, runtimeClass, "initInstance", "VLjava/lang/Object;", new int[] { 2 });
7071
mv.visitLabel(l0);
7172
mv.visitFieldInsn(org.ow2.asmdex.Opcodes.INSN_IGET_BYTE, "Lcom/tns/java/lang/Object;", "__ho0", "B", 1, 2);
7273
mv.visitOperationInsn(org.ow2.asmdex.Opcodes.INSN_AND_INT_LIT8, 1, 1, 0, 1);
7374
Label l1 = new Label();
7475
mv.visitJumpInsn(org.ow2.asmdex.Opcodes.INSN_IF_LEZ, l1, 1, 0);
7576
mv.visitVarInsn(org.ow2.asmdex.Opcodes.INSN_CONST_4, 0, 0);
7677
mv.visitStringInsn(org.ow2.asmdex.Opcodes.INSN_CONST_STRING, 1, "clone");
77-
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, "Lcom/tns/Platform;", "callJSMethod", "Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;", new int[] { 2, 1, 0 });
78+
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, runtimeClass, "callJSMethod", "Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;", new int[] { 2, 1, 0 });
7879
mv.visitIntInsn(org.ow2.asmdex.Opcodes.INSN_MOVE_RESULT_OBJECT, 1);
7980
Label l2 = new Label();
8081
mv.visitLabel(l2);
@@ -103,7 +104,7 @@ public static void dumpObject(ApplicationWriter aw) {
103104
Label l0 = new Label();
104105
mv.visitJumpInsn(org.ow2.asmdex.Opcodes.INSN_IF_NEZ, l0, 1, 0);
105106
mv.visitFieldInsn(org.ow2.asmdex.Opcodes.INSN_IPUT_BOOLEAN, "Lcom/tns/java/lang/Object;", "__initialized", "Z", 2, 3);
106-
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, "Lcom/tns/Platform;", "initInstance", "VLjava/lang/Object;", new int[] { 3 });
107+
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, runtimeClass, "initInstance", "VLjava/lang/Object;", new int[] { 3 });
107108
mv.visitLabel(l0);
108109
mv.visitFieldInsn(org.ow2.asmdex.Opcodes.INSN_IGET_BYTE, "Lcom/tns/java/lang/Object;", "__ho0", "B", 1, 3);
109110
mv.visitOperationInsn(org.ow2.asmdex.Opcodes.INSN_AND_INT_LIT8, 1, 1, 0, 2);
@@ -113,7 +114,7 @@ public static void dumpObject(ApplicationWriter aw) {
113114
mv.visitVarInsn(org.ow2.asmdex.Opcodes.INSN_CONST_4, 1, 0);
114115
mv.visitArrayOperationInsn(org.ow2.asmdex.Opcodes.INSN_APUT_OBJECT, 4, 0, 1);
115116
mv.visitStringInsn(org.ow2.asmdex.Opcodes.INSN_CONST_STRING, 1, "equals");
116-
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, "Lcom/tns/Platform;", "callJSMethod", "Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;", new int[] { 3, 1, 0 });
117+
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, runtimeClass, "callJSMethod", "Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;", new int[] { 3, 1, 0 });
117118
mv.visitIntInsn(org.ow2.asmdex.Opcodes.INSN_MOVE_RESULT_OBJECT, 1);
118119
mv.visitTypeInsn(org.ow2.asmdex.Opcodes.INSN_CHECK_CAST, 0, 1, 0, "Ljava/lang/Boolean;");
119120
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_VIRTUAL, "Ljava/lang/Boolean;", "booleanValue", "Z", new int[] { 1 });
@@ -145,15 +146,15 @@ public static void dumpObject(ApplicationWriter aw) {
145146
mv.visitJumpInsn(org.ow2.asmdex.Opcodes.INSN_IF_NEZ, l0, 1, 0);
146147
mv.visitVarInsn(org.ow2.asmdex.Opcodes.INSN_CONST_4, 1, 1);
147148
mv.visitFieldInsn(org.ow2.asmdex.Opcodes.INSN_IPUT_BOOLEAN, "Lcom/tns/java/lang/Object;", "__initialized", "Z", 1, 2);
148-
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, "Lcom/tns/Platform;", "initInstance", "VLjava/lang/Object;", new int[] { 2 });
149+
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, runtimeClass, "initInstance", "VLjava/lang/Object;", new int[] { 2 });
149150
mv.visitLabel(l0);
150151
mv.visitFieldInsn(org.ow2.asmdex.Opcodes.INSN_IGET_BYTE, "Lcom/tns/java/lang/Object;", "__ho0", "B", 1, 2);
151152
mv.visitOperationInsn(org.ow2.asmdex.Opcodes.INSN_AND_INT_LIT8, 1, 1, 0, 4);
152153
Label l1 = new Label();
153154
mv.visitJumpInsn(org.ow2.asmdex.Opcodes.INSN_IF_LEZ, l1, 1, 0);
154155
mv.visitVarInsn(org.ow2.asmdex.Opcodes.INSN_CONST_4, 0, 0);
155156
mv.visitStringInsn(org.ow2.asmdex.Opcodes.INSN_CONST_STRING, 1, "finalize");
156-
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, "Lcom/tns/Platform;", "callJSMethod", "Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;", new int[] { 2, 1, 0 });
157+
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, runtimeClass, "callJSMethod", "Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;", new int[] { 2, 1, 0 });
157158
Label l2 = new Label();
158159
mv.visitLabel(l2);
159160
mv.visitInsn(org.ow2.asmdex.Opcodes.INSN_RETURN_VOID);
@@ -179,15 +180,15 @@ public static void dumpObject(ApplicationWriter aw) {
179180
mv.visitJumpInsn(org.ow2.asmdex.Opcodes.INSN_IF_NEZ, l0, 1, 0);
180181
mv.visitVarInsn(org.ow2.asmdex.Opcodes.INSN_CONST_4, 1, 1);
181182
mv.visitFieldInsn(org.ow2.asmdex.Opcodes.INSN_IPUT_BOOLEAN, "Lcom/tns/java/lang/Object;", "__initialized", "Z", 1, 2);
182-
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, "Lcom/tns/Platform;", "initInstance", "VLjava/lang/Object;", new int[] { 2 });
183+
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, runtimeClass, "initInstance", "VLjava/lang/Object;", new int[] { 2 });
183184
mv.visitLabel(l0);
184185
mv.visitFieldInsn(org.ow2.asmdex.Opcodes.INSN_IGET_BYTE, "Lcom/tns/java/lang/Object;", "__ho0", "B", 1, 2);
185186
mv.visitOperationInsn(org.ow2.asmdex.Opcodes.INSN_AND_INT_LIT8, 1, 1, 0, 8);
186187
Label l1 = new Label();
187188
mv.visitJumpInsn(org.ow2.asmdex.Opcodes.INSN_IF_LEZ, l1, 1, 0);
188189
mv.visitVarInsn(org.ow2.asmdex.Opcodes.INSN_CONST_4, 0, 0);
189190
mv.visitStringInsn(org.ow2.asmdex.Opcodes.INSN_CONST_STRING, 1, "hashCode");
190-
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, "Lcom/tns/Platform;", "callJSMethod", "Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;", new int[] { 2, 1, 0 });
191+
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, runtimeClass, "callJSMethod", "Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;", new int[] { 2, 1, 0 });
191192
mv.visitIntInsn(org.ow2.asmdex.Opcodes.INSN_MOVE_RESULT_OBJECT, 1);
192193
mv.visitTypeInsn(org.ow2.asmdex.Opcodes.INSN_CHECK_CAST, 0, 1, 0, "Ljava/lang/Integer;");
193194
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_VIRTUAL, "Ljava/lang/Integer;", "intValue", "I", new int[] { 1 });
@@ -299,15 +300,15 @@ public static void dumpObject(ApplicationWriter aw) {
299300
mv.visitJumpInsn(org.ow2.asmdex.Opcodes.INSN_IF_NEZ, l0, 1, 0);
300301
mv.visitVarInsn(org.ow2.asmdex.Opcodes.INSN_CONST_4, 1, 1);
301302
mv.visitFieldInsn(org.ow2.asmdex.Opcodes.INSN_IPUT_BOOLEAN, "Lcom/tns/java/lang/Object;", "__initialized", "Z", 1, 2);
302-
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, "Lcom/tns/Platform;", "initInstance", "VLjava/lang/Object;", new int[] { 2 });
303+
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, runtimeClass, "initInstance", "VLjava/lang/Object;", new int[] { 2 });
303304
mv.visitLabel(l0);
304305
mv.visitFieldInsn(org.ow2.asmdex.Opcodes.INSN_IGET_BYTE, "Lcom/tns/java/lang/Object;", "__ho0", "B", 1, 2);
305306
mv.visitOperationInsn(org.ow2.asmdex.Opcodes.INSN_AND_INT_LIT8, 1, 1, 0, 16);
306307
Label l1 = new Label();
307308
mv.visitJumpInsn(org.ow2.asmdex.Opcodes.INSN_IF_LEZ, l1, 1, 0);
308309
mv.visitVarInsn(org.ow2.asmdex.Opcodes.INSN_CONST_4, 0, 0);
309310
mv.visitStringInsn(org.ow2.asmdex.Opcodes.INSN_CONST_STRING, 1, "toString");
310-
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, "Lcom/tns/Platform;", "callJSMethod", "Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;", new int[] { 2, 1, 0 });
311+
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, runtimeClass, "callJSMethod", "Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;", new int[] { 2, 1, 0 });
311312
mv.visitIntInsn(org.ow2.asmdex.Opcodes.INSN_MOVE_RESULT_OBJECT, 1);
312313
mv.visitTypeInsn(org.ow2.asmdex.Opcodes.INSN_CHECK_CAST, 0, 1, 0, "Ljava/lang/String;");
313314
Label l2 = new Label();

binding-generator/Generator/src/com/tns/bindings/Dump.java

Lines changed: 87 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ public class Dump
1717
private static final String callJsMethodSignatureCtor = "Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;Z[Ljava/lang/Object;";
1818
private static final String callJsMethodSignatureMethod = "Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Class;[Ljava/lang/Object;";
1919
private static final String LCOM_TNS = "Lcom/tns/gen/";
20-
private static final String LCOM_TNS_PLATFORM = "Lcom/tns/Platform;";
20+
private static final String LCOM_TNS_RUNTIME = "Lcom/tns/Runtime;";
2121
static final String preferenceActivityJniSignature = "Lcom/tns/android/preference/PreferenceActivity;";
2222
static final String preferenceActivityClass = "Landroid/preference/PreferenceActivity;";
2323
static final String objectClass = "Ljava/lang/Object;";
2424

25-
static final String platformClass = LCOM_TNS_PLATFORM;
25+
static final String runtimeClass = LCOM_TNS_RUNTIME;
2626
static final String callJSMethodName = "callJSMethod";
2727
static final String initInstanceMethodName = "initInstance";
2828

@@ -389,65 +389,110 @@ private Method[] groupMethodsByName(Method[] methods)
389389

390390
return result.values().toArray(new Method[result.size()]);
391391
}
392+
393+
private String getMethodSignature(Method m)
394+
{
395+
String sig = m.toGenericString();
396+
397+
int nameIdx = sig.indexOf("(");
398+
int endSigIdx = sig.indexOf(")") + 1;
399+
400+
return m.getName() + sig.substring(nameIdx, endSigIdx);
401+
}
392402

393403
private Method[] getSupportedMethods(Class<?> clazz, HashSet<String> methodOverrides)
394404
{
395405
ArrayList<Method> result = new ArrayList<Method>();
396-
HashMap<String, Method> finalMethods = new HashMap<String, Method>();
397-
ArrayList<Class<?>> implementedInterfaces = new ArrayList<Class<?>>();
398-
while (clazz != null)
406+
407+
if (clazz.isInterface())
399408
{
400-
Method[] methods = clazz.getDeclaredMethods();
401-
402-
ArrayList<Method> methodz = new ArrayList<Method>();
403-
404-
for (int i = 0; i < methods.length; i++)
409+
Set<String> objectMethods = new HashSet<String>();
410+
for (Method objMethod: java.lang.Object.class.getDeclaredMethods())
405411
{
406-
Method candidateMethod = methods[i];
407-
if (methodOverrides != null && !methodOverrides.contains(candidateMethod.getName()))
412+
if (!Modifier.isStatic(objMethod.getModifiers()))
408413
{
409-
continue;
414+
String sig = getMethodSignature(objMethod);
415+
objectMethods.add(sig);
410416
}
411-
412-
methodz.add(methods[i]);
413417
}
414-
415-
416-
Class<?>[] interfaces = clazz.getInterfaces();
417-
for (int i = 0; i < interfaces.length; i++)
418+
Set<Method> notImplementedObjectMethods = new HashSet<Method>();
419+
Method[] ifaceMethods = clazz.getDeclaredMethods();
420+
for (Method ifaceMethod: ifaceMethods)
418421
{
419-
implementedInterfaces.add(interfaces[i]);
422+
if (!Modifier.isStatic(ifaceMethod.getModifiers()))
423+
{
424+
String sig = getMethodSignature(ifaceMethod);
425+
if (objectMethods.contains(sig) && !methodOverrides.contains(ifaceMethod.getName()))
426+
{
427+
notImplementedObjectMethods.add(ifaceMethod);
428+
}
429+
}
420430
}
421-
422-
for (int i = 0; i < methodz.size(); i++)
431+
for (Method ifaceMethod: ifaceMethods)
423432
{
424-
Method method = methodz.get(i);
425-
426-
if (isMethodSupported(method, finalMethods))
433+
if (!notImplementedObjectMethods.contains(ifaceMethod))
427434
{
428-
result.add(method);
435+
result.add(ifaceMethod);
429436
}
430437
}
431-
432-
clazz = clazz.getSuperclass();
433438
}
434-
435-
for (int i = 0; i < implementedInterfaces.size(); i++)
439+
else
436440
{
437-
Class<?> implementedInterface = implementedInterfaces.get(i);
438-
Method[] interfaceMethods = implementedInterface.getMethods();
439-
for (int j = 0; j < interfaceMethods.length; j++)
441+
HashMap<String, Method> finalMethods = new HashMap<String, Method>();
442+
ArrayList<Class<?>> implementedInterfaces = new ArrayList<Class<?>>();
443+
while (clazz != null)
440444
{
441-
Method method = interfaceMethods[j];
445+
Method[] methods = clazz.getDeclaredMethods();
446+
447+
ArrayList<Method> methodz = new ArrayList<Method>();
448+
449+
for (int i = 0; i < methods.length; i++)
450+
{
451+
Method candidateMethod = methods[i];
452+
if (methodOverrides != null && !methodOverrides.contains(candidateMethod.getName()))
453+
{
454+
continue;
455+
}
456+
457+
methodz.add(methods[i]);
458+
}
459+
460+
Class<?>[] interfaces = clazz.getInterfaces();
461+
for (int i = 0; i < interfaces.length; i++)
462+
{
463+
implementedInterfaces.add(interfaces[i]);
464+
}
442465

443-
if (methodOverrides != null && !methodOverrides.contains(method.getName()))
466+
for (int i = 0; i < methodz.size(); i++)
444467
{
445-
continue;
468+
Method method = methodz.get(i);
469+
470+
if (isMethodSupported(method, finalMethods))
471+
{
472+
result.add(method);
473+
}
446474
}
447475

448-
if (!isMethodMarkedAsFinalInClassHierarchy(method, finalMethods))
476+
clazz = clazz.getSuperclass();
477+
}
478+
479+
for (int i = 0; i < implementedInterfaces.size(); i++)
480+
{
481+
Class<?> implementedInterface = implementedInterfaces.get(i);
482+
Method[] interfaceMethods = implementedInterface.getMethods();
483+
for (int j = 0; j < interfaceMethods.length; j++)
449484
{
450-
result.add(method);
485+
Method method = interfaceMethods[j];
486+
487+
if (methodOverrides != null && !methodOverrides.contains(method.getName()))
488+
{
489+
continue;
490+
}
491+
492+
if (!isMethodMarkedAsFinalInClassHierarchy(method, finalMethods))
493+
{
494+
result.add(method);
495+
}
451496
}
452497
}
453498
}
@@ -617,7 +662,7 @@ private void generateCtorOverridenBlock(MethodVisitor mv, int thisRegister, Cons
617662
int argCount = generateArrayForCallJsArguments(mv, ctor.getParameterTypes(), thisRegister, classSignature, tnsClassSignature);
618663
mv.visitStringInsn(org.ow2.asmdex.Opcodes.INSN_CONST_STRING, 1, "init"); //put "init" in register 1
619664
mv.visitVarInsn(org.ow2.asmdex.Opcodes.INSN_CONST_4, 2, 1); //put true to register 2 == isConstructor argument
620-
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, LCOM_TNS_PLATFORM, "callJSMethod", callJsMethodSignatureCtor, new int[]
665+
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, LCOM_TNS_RUNTIME, "callJSMethod", callJsMethodSignatureCtor, new int[]
621666
{ 3, 1, 2, 0 }); //invoke callJSMethod(this, "init", true, params)
622667
}
623668

@@ -628,7 +673,7 @@ private void generateInitializedBlock(MethodVisitor mv, int thisRegister, String
628673
mv.visitJumpInsn(org.ow2.asmdex.Opcodes.INSN_IF_NEZ, label, thisRegister - 2, 0); //compare local var 1 with false
629674
mv.visitVarInsn(org.ow2.asmdex.Opcodes.INSN_CONST_4, thisRegister - 1, 1); //put true in local var 1
630675
mv.visitFieldInsn(org.ow2.asmdex.Opcodes.INSN_IPUT_BOOLEAN, tnsClassSignature, "__initialized", "Z", thisRegister - 1 , thisRegister); //set field to the value of 2
631-
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, LCOM_TNS_PLATFORM, "initInstance", "VLjava/lang/Object;", new int[] { thisRegister }); //call init instance passing this as arugment
676+
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, LCOM_TNS_RUNTIME, "initInstance", "VLjava/lang/Object;", new int[] { thisRegister }); //call init instance passing this as arugment
632677
mv.visitLabel(label);
633678
}
634679

@@ -789,7 +834,7 @@ private void generateCallOverrideBlock(MethodVisitor mv, Method method, int this
789834
mv.visitTypeInsn(org.ow2.asmdex.Opcodes.INSN_CONST_CLASS, 2, 0, 0, getClassSignatureOfType(returnType));
790835
}
791836

792-
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, platformClass, callJSMethodName, callJsMethodSignatureMethod, new int[] { thisRegister, 1, 2, 0 });
837+
mv.visitMethodInsn(org.ow2.asmdex.Opcodes.INSN_INVOKE_STATIC, runtimeClass, callJSMethodName, callJsMethodSignatureMethod, new int[] { thisRegister, 1, 2, 0 });
793838

794839
//Label returnLabel = new Label();
795840
//mv.visitLabel(returnLabel);
@@ -1158,4 +1203,4 @@ private int getDexModifiers(int modifiers)
11581203

11591204
return org.ow2.asmdex.Opcodes.ACC_PROTECTED;
11601205
}
1161-
}
1206+
}

binding-generator/Tester/src/com/proxy/Button1.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import java.lang.reflect.Array;
44

5-
import com.tns.Platform;
5+
import com.tns.Runtime;
66

77
import android.content.Context;
88
import android.util.Log;

binding-generator/Tester/src/com/tns/Platform.java renamed to binding-generator/Tester/src/com/tns/Runtime.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import com.tns.runtimebindinggenerator.tester.MethodResolver;
88

9-
public class Platform
9+
public class Runtime
1010
{
1111
public static Object implementationObject;
1212

0 commit comments

Comments
 (0)