Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/Isabelle/Archive-of-Formal-Proofs/thys/JinjaDCI/JVM/   (Archive of formal Proofs Version 2026-5©)  Datei vom 29.4.2026 mit Größe 3 kB image not shown  

Quelle  JVMState.thy

  Sprache: Isabelle
 

(*  Title:      Jinja/JVM/JVMState.thy

    Author:     Cornelia Pusch, Gerwin Klein, Susannah Mansky
    Copyright   1999 Technische Universitaet Muenchen, 2019-20 UIUC

    Based on the Jinja theory JVM/JVMState.thy by Cornelia Pusch and Gerwin Klein
*)


chapter  Jinja Virtual Machine \label{cha:jvm}

section  State of the JVM

theory JVMState imports "../Common/Objects" begin


type_synonym 
  pc = nat

abbreviation start_sheap :: "sheap"
where "start_sheap (λx. None)(Start (Map.empty,Done))"

definition start_sheap_preloaded :: "'m prog sheap"
where
  "start_sheap_preloaded P fold (λ(C,cl) f. f(C := Some (sblank P C, Prepared))) P (λx. None)"

subsection  Frame Stack

datatype init_call_status = No_ics | Calling cname "cname list"
                          | Called "cname list" | Throwing "cname list" addr
  @{text "No_ics"} = not currently calling or waiting for the result of an initialization procedure call
   @{text "Calling C Cs"} = current instruction is calling for initialization of classes @{text "C#Cs"} (last class
 is the original) -- still collecting classes to be initialized, @{text "C"} most recently collected

   @{text "Called Cs"} = current instruction called initialization and is waiting for the result
 -- now initializing classes in the list

   @{text "Throwing Cs a"} = frame threw or was thrown an error causing erroneous end of initialization
 procedure for classes @{text "Cs"}


type_synonym
  frame = "val list × val list × cname × mname × pc × init_call_status"
   operand stack
   registers (including this pointer, method parameters, and local variables)
   name of class where current method is defined
   current method
   program counter within frame
   indicates frame's initialization call status

translations
  (type) "frame" <= (type) "val list × val list × char list × char list × nat × init_call_status"

fun curr_stk :: "frame val list" where
"curr_stk (stk, loc, C, M, pc, ics) = stk"

fun curr_class :: "frame cname" where
"curr_class (stk, loc, C, M, pc, ics) = C"

fun curr_method :: "frame mname" where
"curr_method (stk, loc, C, M, pc, ics) = M"

fun curr_pc :: "frame nat" where
"curr_pc (stk, loc, C, M, pc, ics) = pc"

fun init_status :: "frame init_call_status" where
 "init_status (stk, loc, C, M, pc, ics) = ics"

fun ics_of :: "frame init_call_status" where
 "ics_of fr = snd(snd(snd(snd(snd fr))))"


subsection  Runtime State

type_synonym
  jvm_state = "addr option × heap × frame list × sheap"  
   exception flag, heap, frames, static heap

translations
  (type) "jvm_state" <= (type) "nat option × heap × frame list × sheap"

fun frames_of :: "jvm_state frame list" where
"frames_of (xp, h, frs, sh) = frs"

abbreviation sheap :: "jvm_state sheap" where
"sheap js snd (snd (snd js))"

end

Messung V0.5 in Prozent
C=78 H=100 G=89

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet am  2026-07-05) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.