diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 0b2337d187336df51cad7de7a4e7b89885a79a37..ddb7d56919dcd5c6ec888879732f97eaec858882 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,8 @@
+2000-01-09  Anthony Green  <green@cygnus.com>
+
+	* jcf-write.c (generate_bytecode_insns): Emit invokeinterface
+	bytecodes in the correct order.
+
 2000-01-09  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
 	* Makefile.in (jcf-dump, gcjh): Move ../errors.o before $(LIBS).
diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c
index 98436f2e63296aab8c058a7bee92dc6c51d0d63f..0ddfa9ee374288ee4ee9540e7be19e158a1cacd3 100644
--- a/gcc/java/jcf-write.c
+++ b/gcc/java/jcf-write.c
@@ -2509,6 +2509,11 @@ generate_bytecode_insns (exp, target, state)
 	    else
 	      OP1 (OPCODE_invokevirtual);
 	    OP2 (index);
+	    if (interface)
+	      {
+		OP1 (nargs);
+		OP1 (0);
+	      }
 	    f = TREE_TYPE (TREE_TYPE (f));
 	    if (TREE_CODE (f) != VOID_TYPE)
 	      {
@@ -2518,11 +2523,6 @@ generate_bytecode_insns (exp, target, state)
 		else
 		  NOTE_PUSH (size);
 	      }
-	    if (interface)
-	      {
-		OP1 (nargs);
-		OP1 (0);
-	      }
 	    break;
 	  }
       }