src/HOL/MicroJava/JVM/JVMState.thy
author kleing
Fri, 22 Sep 2000 16:28:53 +0200
changeset 10061 fe82134773dc
parent 10057 8c8d2d0d3ef8
child 10922 f1209aff9517
permissions -rw-r--r--
added HTML syntax; added spaces in normal syntax for better documents
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     1
(*  Title:      HOL/MicroJava/JVM/JVMState.thy
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     2
    ID:         $Id$
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     3
    Author:     Cornelia Pusch
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     4
    Copyright   1999 Technische Universitaet Muenchen
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     5
*)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     6
10057
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
     7
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
     8
header {* State of the JVM *}
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     9
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    10
10057
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
    11
theory JVMState = Store:
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    12
10057
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
    13
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
    14
text {* frame stack :*}
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    15
types
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    16
 opstack 	 = "val list"
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    17
 locvars 	 = "val list" 
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    18
 p_count 	 = nat
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    19
10057
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
    20
 frame = "opstack \<times>			
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
    21
          locvars \<times>		
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
    22
          cname \<times>			
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
    23
          sig \<times>			
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
    24
          p_count"
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    25
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    26
	(* operand stack *)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    27
	(* local variables *)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    28
	(* name of def. class defined *)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    29
	(* meth name+param_desc *)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    30
	(* program counter within frame *)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    31
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    32
10057
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
    33
text {* exceptions: *}
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    34
constdefs
10057
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
    35
  raise_xcpt :: "bool => xcpt => xcpt option"
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
    36
  "raise_xcpt c x == (if c then Some x else None)"
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    37
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    38
10057
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
    39
text {* runtime state: *}
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
    40
types
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
    41
  jvm_state = "xcpt option \<times> aheap \<times> frame list"	
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    42
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    43
10057
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
    44
text {* dynamic method lookup: *}
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    45
constdefs
10057
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
    46
  dyn_class	:: "'code prog \<times> sig \<times> cname => cname"
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
    47
  "dyn_class == \<lambda>(G,sig,C). fst(the(method(G,C) sig))"
8c8d2d0d3ef8 converted to Isar, tuned
kleing
parents: 10042
diff changeset
    48
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    49
end