Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/compiler/CPS/main/literals.sml
ViewVC logotype

Diff of /sml/trunk/compiler/CPS/main/literals.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 5014, Sun Apr 28 20:24:18 2019 UTC revision 5015, Mon Apr 29 01:51:55 2019 UTC
# Line 64  Line 64 
64        = LI_TOP of lit_val list        = LI_TOP of lit_val list
65        | LI_BLOCK of (block_kind * lit_val list * lvar * lit_exp)        | LI_BLOCK of (block_kind * lit_val list * lvar * lit_exp)
66        | LI_F64BLOCK of (RealLit.t list * lvar * lit_exp)        | LI_F64BLOCK of (RealLit.t list * lvar * lit_exp)
67        | LI_I32BLOCK of (IntInf.int list * lvar * lit_exp)        | LI_RAWBLOCK of (IntInf.int list * lvar * lit_exp)
68    
69      fun rk2bk CPS.RK_VECTOR = LI_VECTOR      fun rk2bk CPS.RK_VECTOR = LI_VECTOR
70        | rk2bk CPS.RK_RECORD = LI_RECORD        | rk2bk CPS.RK_RECORD = LI_RECORD
# Line 145  Line 145 
145                  depth (rest, d+1, Int.max(maxDepth, d+length ls))                  depth (rest, d+1, Int.max(maxDepth, d+length ls))
146              | depth (LI_F64BLOCK(ls, _, rest), d, maxDepth) =              | depth (LI_F64BLOCK(ls, _, rest), d, maxDepth) =
147                  depth (rest, d+1, Int.max(maxDepth, d+length ls))                  depth (rest, d+1, Int.max(maxDepth, d+length ls))
148              | depth (LI_I32BLOCK(ls, _, rest), d, maxDepth) =              | depth (LI_RAWBLOCK(ls, _, rest), d, maxDepth) =
149                  depth (rest, d+1, Int.max(maxDepth, d+length ls))                  depth (rest, d+1, Int.max(maxDepth, d+length ls))
150            fun emitLitExp (env, exp, code) = let            fun emitLitExp (env, exp, code) = let
151                  fun emitLitVals ([], _, code) = code                  fun emitLitVals ([], _, code) = code
# Line 180  Line 180 
180                          emitLitExp (v::env, rest, emitBlock(bk, ls, code))                          emitLitExp (v::env, rest, emitBlock(bk, ls, code))
181                      | (LI_F64BLOCK(ls, v, rest)) =>                      | (LI_F64BLOCK(ls, v, rest)) =>
182                          emitLitExp (v::env, rest, emitF64Block(ls, code))                          emitLitExp (v::env, rest, emitF64Block(ls, code))
183                      | (LI_I32BLOCK(ls, v, rest)) =>                      | (LI_RAWBLOCK(ls, v, rest)) =>
184                          emitLitExp (v::env, rest, emitI32Block(ls, code))                          emitLitExp (v::env, rest, emitI32Block(ls, code))
185                    (* end case *)                    (* end case *)
186                  end                  end
# Line 316  Line 316 
316                  in                  in
317                    case !reals                    case !reals
318                     of [] => ()                     of [] => ()
319                      | xs => (enter(rrtv, ZZ_RCD(RK_FBLOCK, g(xs,[]))); used rrtv)                      | xs => (enter(rrtv, ZZ_RCD(RK_RAW64BLOCK, g(xs,[]))); used rrtv)
320                  end                  end
321            end (* local of processing real literals *)            end (* local of processing real literals *)
322          (* translation on the CPS values *)          (* translation on the CPS values *)
# Line 361  Line 361 
361                        end)                        end)
362          (* register a wrapped float literal *)          (* register a wrapped float literal *)
363            fun wrapfloat (sz, u, v, t) = if const u            fun wrapfloat (sz, u, v, t) = if const u
364                  then (enter(v, ZZ_RCD(RK_FBLOCK, [u])); Fn.id)                  then (enter(v, ZZ_RCD(RK_RAW64BLOCK, [u])); Fn.id)
365                  else let val (nu, hh) = lpsv u                  else let val (nu, hh) = lpsv u
366                        in (fn ce => hh(PURE(P.WRAP(P.FLOAT sz), [nu], v, t, ce)))                        in (fn ce => hh(PURE(P.WRAP(P.FLOAT sz), [nu], v, t, ce)))
367                       end                       end
# Line 394  Line 394 
394                          | (ZZ_STR s) =>                          | (ZZ_STR s) =>
395                              bug "currently we don't expect ZZ_STR in mklit"                              bug "currently we don't expect ZZ_STR in mklit"
396                          (* lit   --- or we could inline string *)                          (* lit   --- or we could inline string *)
397                          | (ZZ_RCD(CPS.RK_FBLOCK, vs)) =>                          | (ZZ_RCD(CPS.RK_RAW64BLOCK, vs)) =>
398                              LI_F64BLOCK(map unREAL vs, v, lit)                              LI_F64BLOCK(map unREAL vs, v, lit)
399                          | (ZZ_RCD(CPS.RK_I32BLOCK, vs)) =>                          | (ZZ_RCD(CPS.RK_RAWBLOCK, vs)) =>
400                              LI_I32BLOCK(map unINT32 vs, v, lit)                              LI_RAWBLOCK(map unINT32 vs, v, lit)
401                          | (ZZ_RCD(rk, vs)) =>                          | (ZZ_RCD(rk, vs)) =>
402                              LI_BLOCK(rk2bk rk, map val2lit vs, v, lit)                              LI_BLOCK(rk2bk rk, map val2lit vs, v, lit)
403                      end                      end
# Line 427  Line 427 
427                                            let val n = length vs                                            let val n = length vs
428                                                val t =                                                val t =
429                                                  case rk                                                  case rk
430                                                   of RK_FBLOCK => PTRt(FPT n)                                                   of RK_RAW64BLOCK => PTRt(FPT n)
431                                                    | RK_VECTOR => CPSUtil.BOGt                                                    | RK_VECTOR => CPSUtil.BOGt
432                                                    | _ => PTRt(RPT n)                                                    | _ => PTRt(RPT n)
433                                             in fn ce => SELECT(i, rval, v, t, ce)                                             in fn ce => SELECT(i, rval, v, t, ce)

Legend:
Removed from v.5014  
changed lines
  Added in v.5015

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0