src/HOL/MicroJava/JVM/JVMState.thy
author nipkow
Fri, 26 Nov 1999 08:46:59 +0100
changeset 8034 6fc37b5c5e98
parent 8011 d14c4e9e9c8e
child 10042 7164dc0d24d8
permissions -rw-r--r--
Various little changes like cmethd -> method and cfield -> field.
nipkow@8011
     1
(*  Title:      HOL/MicroJava/JVM/JVMState.thy
nipkow@8011
     2
    ID:         $Id$
nipkow@8011
     3
    Author:     Cornelia Pusch
nipkow@8011
     4
    Copyright   1999 Technische Universitaet Muenchen
nipkow@8011
     5
nipkow@8011
     6
State of the JVM
nipkow@8011
     7
*)
nipkow@8011
     8
nipkow@8011
     9
JVMState = Store +
nipkow@8011
    10
nipkow@8011
    11
nipkow@8011
    12
(** frame stack **)
nipkow@8011
    13
nipkow@8011
    14
types
nipkow@8011
    15
 opstack 	 = "val list"
nipkow@8011
    16
 locvars 	 = "val list" 
nipkow@8011
    17
 p_count 	 = nat
nipkow@8011
    18
nipkow@8011
    19
 frame = "opstack \\<times>			
nipkow@8011
    20
	  locvars \\<times>		
nipkow@8011
    21
	  cname \\<times>			
nipkow@8011
    22
	  sig \\<times>			
nipkow@8011
    23
	  p_count"
nipkow@8011
    24
nipkow@8011
    25
	(* operand stack *)
nipkow@8011
    26
	(* local variables *)
nipkow@8011
    27
	(* name of def. class defined *)
nipkow@8011
    28
	(* meth name+param_desc *)
nipkow@8011
    29
	(* program counter within frame *)
nipkow@8011
    30
nipkow@8011
    31
nipkow@8011
    32
(** exceptions **)
nipkow@8011
    33
nipkow@8011
    34
constdefs
nipkow@8011
    35
 raise_xcpt :: "bool \\<Rightarrow> xcpt \\<Rightarrow> xcpt option"
nipkow@8011
    36
"raise_xcpt c x \\<equiv> (if c then Some x else None)"
nipkow@8011
    37
nipkow@8011
    38
(** runtime state **)
nipkow@8011
    39
nipkow@8011
    40
types
nipkow@8034
    41
 jvm_state = "xcpt option \\<times> aheap \\<times> frame list"	
nipkow@8011
    42
nipkow@8011
    43
nipkow@8011
    44
nipkow@8011
    45
(** dynamic method lookup **)
nipkow@8011
    46
nipkow@8011
    47
constdefs
nipkow@8011
    48
 dyn_class	:: "'code prog \\<times> sig \\<times> cname \\<Rightarrow> cname"
nipkow@8034
    49
"dyn_class \\<equiv> \\<lambda>(G,sig,C). fst(the(method(G,C) sig))"
nipkow@8011
    50
end