Invoke instruction gets fully qualified method name (class+name+sig) as
in Sun's JVM spec
--- a/src/HOL/MicroJava/JVM/JVMExecInstr.thy Mon Aug 07 14:32:56 2000 +0200
+++ b/src/HOL/MicroJava/JVM/JVMExecInstr.thy Mon Aug 07 14:34:03 2000 +0200
@@ -56,7 +56,7 @@
in
(xp', hp, (stk', vars, Cl, sig, pc+1)#frs))"
- "exec_instr (Invoke mn ps) G hp stk vars Cl sig pc frs =
+ "exec_instr (Invoke C mn ps) G hp stk vars Cl sig pc frs =
(let n = length ps;
argsoref = take (n+1) stk;
oref = last argsoref;
--- a/src/HOL/MicroJava/JVM/JVMInstructions.thy Mon Aug 07 14:32:56 2000 +0200
+++ b/src/HOL/MicroJava/JVM/JVMInstructions.thy Mon Aug 07 14:34:03 2000 +0200
@@ -8,6 +8,7 @@
JVMInstructions = JVMState +
+
datatype
instr = Load nat (* load from local variable *)
| Store nat (* store into local variable *)
@@ -17,7 +18,7 @@
| Getfield vname cname (* Fetch field from object *)
| Putfield vname cname (* Set field in object *)
| Checkcast cname (* Check whether object is of given type *)
- | Invoke mname "(ty list)" (* inv. instance meth of an object *)
+ | Invoke cname mname "(ty list)" (* inv. instance meth of an object *)
| Return
| Pop
| Dup