Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /branches/charisee_dev/src/compiler/high-to-mid/split.sml
ViewVC logotype

Diff of /branches/charisee_dev/src/compiler/high-to-mid/split.sml

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

revision 3316, Sat Oct 17 01:40:08 2015 UTC revision 3344, Fri Oct 23 04:38:49 2015 UTC
# Line 358  Line 358 
358          |split((y,app),fieldset,_) =(((y,app),[]),fieldset)          |split((y,app),fieldset,_) =(((y,app),[]),fieldset)
359    
360    
361      fun iterMultiple(einapp2,newbies2,fieldset)=let  (*
362          fun itercode([],rest,code,_)=(rest,code)  B
363    NoISSUE (1,3,4)
364    Fail(2,5,6)
365    
366    *)
367    
368        fun iterAll2(einapp2,fields2)=let
369            val fieldset= einSet.EinSet.empty
370            fun itercode([],rest,code,cnt)=(("\n Empty-SplitCount: "^Int.toString(cnt));(rest,code))
371            | itercode(e1::newbies,rest,code,cnt)=let            | itercode(e1::newbies,rest,code,cnt)=let
372                  val ((einapp3,code3),_) = split(e1,fieldset,numFlag)                  val ((einapp3,code3),_) = split(e1,fieldset,numFlag)
373                      val (rest4,code4)=itercode(code3,[],[],cnt+1)                      val (rest4,code4)=itercode(code3,[],[],cnt+1)
374                val _ =testp [toStringBind(e1),"\n\t===>\n",toStringBind(einapp3),"\nand\n",(String.concatWith",\n\t"(List.map toStringBind (code4@rest4)))]
375          in          in
376              itercode(newbies,rest@[einapp3],code4@( rest4)@code,cnt+2)                  if (length(rest@newbies@code) > 500) then let
377                            val _ =("\n SplitCount: "^Int.toString(cnt))
378                            val code5=code4@rest4@code
379                            val rest5=rest@[einapp3]
380                            in
381    (*
382                                (newbies,code5@rest5)(*tab1*)
383                                (newbies,rest5@code5)(*tab2*)
384                                (rest5,newbies@code5)(*tab3*)
385    *)
386                                (rest5,code5@newbies)(*tab4*)
387    (*
388                                (code5,rest5@newbies)(*tab5*)
389                                (code5,newbies@rest5)(*tab6*)
390    *)
391                            end
392                    else  itercode(newbies,rest@[einapp3],code4@rest4@code,cnt+2)
393          end          end
394              val(rest,code)= itercode(newbies2,[],[],1)          val(rest,code)= itercode([einapp2],[],[],0)
395          in          in
396              ((code)@rest@[einapp2])              (*fields2@rest@code (*A*)*)
397                  fields2@code@rest (*B*)
398          end          end
399    
400    
401    
402    
403      fun iterAll(einapp2,fieldset)=let      fun iterAll(einapp2,fieldset)=let
404          fun itercode([],rest,code,_)=(rest,code)          fun itercode([],rest,code,_)=(rest,code)
405          | itercode(e1::newbies,rest,code,cnt)=let          | itercode(e1::newbies,rest,code,cnt)=let
# Line 386  Line 414 
414              (code@rest)              (code@rest)
415          end          end
416    
     fun splitEinApp einapp3= let  
         val fieldset= einSet.EinSet.empty  
417    
         (* **** split in parts **** *)  
         (*  
         val ((einapp4,newbies4),fieldset)=split(einapp3,fieldset,0)  
         val _ =testp["\n\t===>\n",toStringBind(einapp4),"\nand\n",(String.concatWith",\n\t"(List.map toStringBind newbies4))]  
         val (newbies5)= iterMultiple(einapp4,newbies4,fieldset)  
         *)  
   
         (* **** split all at once **** *)  
         val (newbies5)= iterAll([einapp3],fieldset)  
418    
419        fun splitEinApp (einapp3,splitflag)= let
420            val fieldset= einSet.EinSet.empty
421            val (newbies5)=(case splitflag
422                of 1 =>let
423                    (* **** split single **** *)
424                    val ((einapp4,newbies4),fieldset)=split(einapp3,fieldset,0)
425                    in newbies4@[einapp4] end
426                (*| 5=>   iterAll2([einapp3],fieldset)*)
427                | _=>   (* **** split all at once **** *)
428                    iterAll([einapp3],fieldset)
429            (* end case *))
430          in          in
431              newbies5              newbies5
432          end          end

Legend:
Removed from v.3316  
changed lines
  Added in v.3344

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