Ignore:
Timestamp:
Apr 6, 2013, 11:44:00 AM (7 years ago)
Author:
sacerdot
Message:

Performance improvement.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • driver/extracted/policyFront.ml

    r3043 r3098  
    657657    ppc_pc_map Types.option Types.sig0 **)
    658658let jump_expansion_start program labels =
    659   let final_policy =
    660     FoldStuff.foldl_strong (Types.pi1 program) (fun prefix x tl _ p ->
    661       let { Types.fst = pc; Types.snd = sigma } = Types.pi1 p in
    662       let { Types.fst = label; Types.snd = instr } = x in
    663       let isize = instruction_size_jmplen Assembly.Short_jump instr in
    664       { Types.fst = (Nat.plus pc isize); Types.snd =
    665       (BitVectorTrie.insert (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    666         (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    667         Nat.O))))))))))))))))
    668         (Arithmetic.bitvector_of_nat (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    669           (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    670           (Nat.S (Nat.S Nat.O)))))))))))))))) (Nat.S (List.length prefix)))
    671         { Types.fst = (Nat.plus pc isize); Types.snd = Assembly.Short_jump }
    672         sigma) }) { Types.fst = Nat.O; Types.snd =
    673       (BitVectorTrie.insert (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    674         (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    675         Nat.O))))))))))))))))
    676         (Arithmetic.bitvector_of_nat (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    677           (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    678           (Nat.S (Nat.S Nat.O)))))))))))))))) Nat.O) { Types.fst = Nat.O;
    679         Types.snd = Assembly.Short_jump } (BitVectorTrie.Stub (Nat.S (Nat.S
    680         (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    681         (Nat.S (Nat.S (Nat.S (Nat.S Nat.O)))))))))))))))))) }
    682   in
    683   (match Util.gtb (Types.pi1 final_policy).Types.fst
     659  (let { Types.fst = ignore; Types.snd = final_policy } =
     660     Types.pi1
     661       (FoldStuff.foldl_strong (Types.pi1 program)
     662         (fun prefix x tl _ acc_pol ->
     663         (let { Types.fst = acc; Types.snd = p } = Types.pi1 acc_pol in
     664         (fun _ ->
     665         let { Types.fst = pc; Types.snd = sigma } = p in
     666         let { Types.fst = label; Types.snd = instr } = x in
     667         let isize = instruction_size_jmplen Assembly.Short_jump instr in
     668         let sacc =
     669           Arithmetic.increment (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
     670             (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
     671             (Nat.S Nat.O)))))))))))))))) acc
     672         in
     673         { Types.fst = sacc; Types.snd = { Types.fst = (Nat.plus pc isize);
     674         Types.snd =
     675         (BitVectorTrie.insert (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
     676           (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
     677           (Nat.S Nat.O)))))))))))))))) sacc { Types.fst =
     678           (Nat.plus pc isize); Types.snd = Assembly.Short_jump } sigma) } }))
     679           __) { Types.fst =
     680         (BitVector.zero (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
     681           (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
     682           Nat.O))))))))))))))))); Types.snd = { Types.fst = Nat.O;
     683         Types.snd =
     684         (BitVectorTrie.insert (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
     685           (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
     686           (Nat.S Nat.O))))))))))))))))
     687           (Arithmetic.bitvector_of_nat (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
     688             (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
     689             (Nat.S (Nat.S Nat.O)))))))))))))))) Nat.O) { Types.fst = Nat.O;
     690           Types.snd = Assembly.Short_jump } (BitVectorTrie.Stub (Nat.S
     691           (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
     692           (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S Nat.O)))))))))))))))))) } })
     693   in
     694  (fun _ ->
     695  (match Util.gtb final_policy.Types.fst
    684696           (Exp.exp (Nat.S (Nat.S Nat.O)) (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    685697             (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S (Nat.S
    686698             (Nat.S (Nat.S Nat.O))))))))))))))))) with
    687699   | Bool.True -> (fun _ -> Types.None)
    688    | Bool.False -> (fun _ -> Types.Some (Types.pi1 final_policy))) __
    689 
     700   | Bool.False -> (fun _ -> Types.Some final_policy)) __)) __
     701
Note: See TracChangeset for help on using the changeset viewer.