File: djvm-state.lisp

package info (click to toggle)
acl2 8.6%2Bdfsg-2
  • links: PTS
  • area: main
  • in suites: trixie
  • size: 1,111,420 kB
  • sloc: lisp: 17,818,294; java: 125,359; python: 28,122; javascript: 23,458; cpp: 18,851; ansic: 11,569; perl: 7,678; xml: 5,591; sh: 3,976; makefile: 3,833; ruby: 2,633; yacc: 1,126; ml: 763; awk: 295; csh: 233; lex: 197; php: 178; tcl: 49; asm: 23; haskell: 17
file content (49 lines) | stat: -rw-r--r-- 1,877 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
(in-package "DJVM")
(include-book "../M6-DJVM-shared/jvm-state")
(include-book "../M6-DJVM-shared/jvm-thread") ;; for wff-thread
(include-book "../M6-DJVM-shared/jvm-frame-manipulation-primitives") ;; for wff-call-stack
(include-book "../M6-DJVM-shared/jvm-linker") ;; deref-mehtod
(include-book "../DJVM/djvm-thread") ;; 

;; basically copied from consistent-state.lisp
;; ??

(acl2::set-verify-guards-eagerness 2)

(defun max-stack-guard (s)
  (mylet* ((th (thread-by-id (current-thread s)
                             (thread-table s)))
           (frame (top (thread-call-stack th)))
           (method-ptr (method-ptr frame))
           (method     (deref-method method-ptr (instance-class-table s))))
  (and (wff-state s)
       (wff-thread-table (thread-table s))
       (wff-thread th)
       (wff-call-stack (thread-call-stack th))
       (wff-call-frame (top (thread-call-stack th)))
       (wff-class-table (class-table s))
       (wff-instance-class-table (instance-class-table s))
       (wff-method-ptr method-ptr)
       (wff-method-decl method)
       (wff-code (method-code method)))))

(defun max-stack (s)
  (declare (xargs :guard (max-stack-guard s)))
  (mylet* ((th (thread-by-id (current-thread s)
                             (thread-table s)))
           (frame (top (thread-call-stack th)))
           (method-ptr (method-ptr frame))
           (method     (deref-method method-ptr (instance-class-table s))))
       (method-maxstack method)))

;; (in-theory (enable wff-call-stack))

(defun max-local (s)
  (declare (xargs :guard (max-stack-guard s)))
  (mylet* ((th (thread-by-id (current-thread s)
                             (thread-table s)))
           (frame (top (thread-call-stack th)))
           (method-ptr (method-ptr frame))
           (method     (deref-method method-ptr (instance-class-table s))))
       (method-maxlocals method)))