scala/ex_jvm.scala
changeset 226 df455e0a9f98
parent 225 0974c59e7029
child 227 10d4d20c4e4b
equal deleted inserted replaced
225:0974c59e7029 226:df455e0a9f98
    72 .end method
    72 .end method
    73 """
    73 """
    74 
    74 
    75 
    75 
    76 def compile(f: Rec, ns: List[Int]) : Unit = {
    76 def compile(f: Rec, ns: List[Int]) : Unit = {
    77   val class_name = "LOOP"
    77   val class_name = "Prog"
    78   val (aprog, res, max) = compile_rec(f)
    78   val (aprog, res, max) = compile_rec(f)
    79 
    79 
    80   val init_code = init_regs(ns.padTo(max, 0))
    80   val init_code = init_regs(ns.padTo(max, 0))
    81   val main_code = compile_aprog(aprog.p) 
    81   val main_code = compile_aprog(aprog.p) 
    82   val fin_code = print_result(aprog.p.length, res, class_name)
    82   val fin_code = print_result(aprog.p.length, res, class_name)
    92   val result = ("java " + class_name + "/" + class_name).!!
    92   val result = ("java " + class_name + "/" + class_name).!!
    93   val end = System.nanoTime()
    93   val end = System.nanoTime()
    94   println("Result: " + result + "  Time: " + (end - start) / 1.0e9)
    94   println("Result: " + result + "  Time: " + (end - start) / 1.0e9)
    95 }
    95 }
    96 
    96 
       
    97 print("Add(69, 30)   "); compile(Add, List(69, 30))
       
    98 print("Mult(13, 9)   "); compile(recs.Mult, List(13, 9))
       
    99 print("Power(3, 4)   "); compile(Power, List(3, 4))
       
   100 print("Strt:  ");  compile(Strt(2), List(2,3))
    97 
   101 
    98 //compile(S, List(3))
   102 println("FACTORIAL")
    99 //compile(Fact, List(11))
   103 
   100 //compile(Fact, List(12))
   104 for (i <- 5 to 9) {
   101 //compile(Fact, List(13))
   105   println("Input:  " + i)
   102 //compile(Fact, List(14))
   106   compile(Fact, List(i))
       
   107 }
       
   108 
       
   109 println("PRIME TEST")
   103 
   110 
   104 for (i <- 10 to 20) {
   111 for (i <- 10 to 20) {
   105   println("Input:  " + i)
   112   println("Input:  " + i)
   106   compile(Prime, List(i))
   113   compile(Prime, List(i))
   107 }
   114 }