# JAVA class translation 'COS_JavaTest'
# Sat Dec 11 02:05:01 EST 2004
# Produced by Fritzifier, based on JasminVisitor
# Using BCEL library to read Java bytecode
# Here is the original code:
# public class COS_JavaTest {
# private int q = 0;
# public int add(int x, int y) {
# return x+y;
# }
# public int sub(int x, int y) {
# return x-y;
# }
# public int mult(int x, int y) {
# return x*y;
# }
# public int addmult(int x, int y, int z) {
# return add(x,mult(y,z));
# }
# public void set(int x) {
# q = x;
# }
# public int get() {
# return q;
# }
# public int fact(int x) {
# return (x>0)?(x*fact(sub(x,1))):1;
# }
# }
#
[hear] (class COS_JavaTest ()
(field super ((java lang Object) new))
(method unknown (lambda (x) (super (x))))
(field q ((int) new))
(method <init>
(lambda () /
let ((vars / cell new / make-hash / vector
(pair 0 (self)))
(stack / cell new / vector)) /
state-machine (vars) (stack) / ? jvm / ? x / cond
((= (x) 0) (jvm aload 0))
((= (x) 1) (jvm invokespecial <init> 0 0))
((= (x) 2) (jvm aload 0))
((= (x) 3) (jvm iconst 0))
((= (x) 4) (jvm putfield q (int)))
((= (x) 5) (jvm return))
(jvm return))
)
(method add
(lambda (arg0 arg1) /
let ((vars / cell new / make-hash / vector
(pair 0 (self)) (pair 1 (arg0)) (pair 2 (arg1)))
(stack / cell new / vector)) /
state-machine (vars) (stack) / ? jvm / ? x / cond
((= (x) 0) (jvm iload 1))
((= (x) 1) (jvm iload 2))
((= (x) 2) (jvm iadd))
((= (x) 3) (jvm ireturn))
(jvm return))
)
(method sub
(lambda (arg0 arg1) /
let ((vars / cell new / make-hash / vector
(pair 0 (self)) (pair 1 (arg0)) (pair 2 (arg1)))
(stack / cell new / vector)) /
state-machine (vars) (stack) / ? jvm / ? x / cond
((= (x) 0) (jvm iload 1))
((= (x) 1) (jvm iload 2))
((= (x) 2) (jvm isub))
((= (x) 3) (jvm ireturn))
(jvm return))
)
(method mult
(lambda (arg0 arg1) /
let ((vars / cell new / make-hash / vector
(pair 0 (self)) (pair 1 (arg0)) (pair 2 (arg1)))
(stack / cell new / vector)) /
state-machine (vars) (stack) / ? jvm / ? x / cond
((= (x) 0) (jvm iload 1))
((= (x) 1) (jvm iload 2))
((= (x) 2) (jvm imul))
((= (x) 3) (jvm ireturn))
(jvm return))
)
(method addmult
(lambda (arg0 arg1 arg2) /
let ((vars / cell new / make-hash / vector
(pair 0 (self)) (pair 1 (arg0)) (pair 2 (arg1)) (pair 3 (arg2)))
(stack / cell new / vector)) /
state-machine (vars) (stack) / ? jvm / ? x / cond
((= (x) 0) (jvm aload 0))
((= (x) 1) (jvm iload 1))
((= (x) 2) (jvm aload 0))
((= (x) 3) (jvm iload 2))
((= (x) 4) (jvm iload 3))
((= (x) 5) (jvm invokevirtual mult 2 1))
((= (x) 6) (jvm invokevirtual add 2 1))
((= (x) 7) (jvm ireturn))
(jvm return))
)
(method set
(lambda (arg0) /
let ((vars / cell new / make-hash / vector
(pair 0 (self)) (pair 1 (arg0)))
(stack / cell new / vector)) /
state-machine (vars) (stack) / ? jvm / ? x / cond
((= (x) 0) (jvm aload 0))
((= (x) 1) (jvm iload 1))
((= (x) 2) (jvm putfield q (int)))
((= (x) 3) (jvm return))
(jvm return))
)
(method get
(lambda () /
let ((vars / cell new / make-hash / vector
(pair 0 (self)))
(stack / cell new / vector)) /
state-machine (vars) (stack) / ? jvm / ? x / cond
((= (x) 0) (jvm aload 0))
((= (x) 1) (jvm getfield q (int)))
((= (x) 2) (jvm ireturn))
(jvm return))
)
(method fact
(lambda (arg0) /
let ((vars / cell new / make-hash / vector
(pair 0 (self)) (pair 1 (arg0)))
(stack / cell new / vector)) /
state-machine (vars) (stack) / ? jvm / ? x / cond
((= (x) 0) (jvm iload 1))
((= (x) 1) (jvm ifle 11))
((= (x) 2) (jvm iload 1))
((= (x) 3) (jvm aload 0))
((= (x) 4) (jvm aload 0))
((= (x) 5) (jvm iload 1))
((= (x) 6) (jvm iconst 1))
((= (x) 7) (jvm invokevirtual sub 2 1))
((= (x) 8) (jvm invokevirtual fact 1 1))
((= (x) 9) (jvm imul))
((= (x) 10) (jvm goto 12))
((= (x) 11) (jvm iconst 1))
((= (x) 12) (jvm ireturn))
(jvm return))
)
);