@@ -476,7 +476,7 @@ public void super_invoke() {
476
476
}
477
477
478
478
public void super_invoke (Signature sig ) {
479
- emit_invoke (Constants .INVOKESPECIAL , ce .getSuperType (), sig );
479
+ emit_invoke (Constants .INVOKESPECIAL , ce .getSuperType (), sig , false );
480
480
}
481
481
482
482
public void invoke_constructor (Type type ) {
@@ -491,7 +491,7 @@ public void invoke_constructor_this() {
491
491
invoke_constructor (ce .getClassType ());
492
492
}
493
493
494
- private void emit_invoke (int opcode , Type type , Signature sig ) {
494
+ private void emit_invoke (int opcode , Type type , Signature sig , boolean isInterface ) {
495
495
if (sig .getName ().equals (Constants .CONSTRUCTOR_NAME ) &&
496
496
((opcode == Constants .INVOKEVIRTUAL ) ||
497
497
(opcode == Constants .INVOKESTATIC ))) {
@@ -501,19 +501,24 @@ private void emit_invoke(int opcode, Type type, Signature sig) {
501
501
type .getInternalName (),
502
502
sig .getName (),
503
503
sig .getDescriptor (),
504
- opcode == Opcodes . INVOKEINTERFACE );
504
+ isInterface );
505
505
}
506
506
507
507
public void invoke_interface (Type owner , Signature sig ) {
508
- emit_invoke (Constants .INVOKEINTERFACE , owner , sig );
508
+ emit_invoke (Constants .INVOKEINTERFACE , owner , sig , true );
509
509
}
510
510
511
511
public void invoke_virtual (Type owner , Signature sig ) {
512
- emit_invoke (Constants .INVOKEVIRTUAL , owner , sig );
512
+ emit_invoke (Constants .INVOKEVIRTUAL , owner , sig , false );
513
513
}
514
514
515
+ @ Deprecated
515
516
public void invoke_static (Type owner , Signature sig ) {
516
- emit_invoke (Constants .INVOKESTATIC , owner , sig );
517
+ invoke_static (owner , sig , false );
518
+ }
519
+
520
+ public void invoke_static (Type owner , Signature sig , boolean isInterface ) {
521
+ emit_invoke (Constants .INVOKESTATIC , owner , sig , isInterface );
517
522
}
518
523
519
524
public void invoke_virtual_this (Signature sig ) {
@@ -525,7 +530,7 @@ public void invoke_static_this(Signature sig) {
525
530
}
526
531
527
532
public void invoke_constructor (Type type , Signature sig ) {
528
- emit_invoke (Constants .INVOKESPECIAL , type , sig );
533
+ emit_invoke (Constants .INVOKESPECIAL , type , sig , false );
529
534
}
530
535
531
536
public void invoke_constructor_this (Signature sig ) {
@@ -850,7 +855,7 @@ public void invoke(MethodInfo method, Type virtualType) {
850
855
if (sig .getName ().equals (Constants .CONSTRUCTOR_NAME )) {
851
856
invoke_constructor (type , sig );
852
857
} else if (TypeUtils .isStatic (method .getModifiers ())) {
853
- invoke_static (type , sig );
858
+ invoke_static (type , sig , TypeUtils . isInterface ( classInfo . getModifiers ()) );
854
859
} else if (TypeUtils .isInterface (classInfo .getModifiers ())) {
855
860
invoke_interface (type , sig );
856
861
} else {
0 commit comments