示例#1
0
 public void inherit(LGraph graph, NodeBlock other)
 {
     if (other == null)
     {
         stack_ = new AbstractStack(graph.nargs);
         for (int i = 0; i < graph.nargs; i++)
         {
             DDeclareLocal local = new DDeclareLocal(lir_.pc, null);
             local.setOffset((i * 4) + 12);
             add(local);
             stack_.init((i * 4) + 12, local);
         }
     }
     else if (stack_ == null)
     {
         //Debug.Assert(other.stack_ != null);
         stack_ = new AbstractStack(other.stack_);
     }
     else
     {
         // Right now we only create phis for pri/alt.
         joinRegs(Register.Pri, other.stack_.pri);
         joinRegs(Register.Alt, other.stack_.alt);
     }
 }
示例#2
0
 public void push(DDeclareLocal local)
 {
     stack_.Add(new StackEntry(local, local.value));
     local.setOffset(depth);
 }
示例#3
0
 public void inherit(LGraph graph, NodeBlock other)
 {
     if (other == null)
     {
         stack_ = new AbstractStack(graph.nargs);
         for (int i = 0; i < graph.nargs; i++)
         {
             DDeclareLocal local = new DDeclareLocal(lir_.pc, null);
             local.setOffset((i * 4) + 12);
             add(local);
             stack_.init((i * 4) + 12, local);
         }
     }
     else if (stack_ == null)
     {
         //Debug.Assert(other.stack_ != null);
         stack_ = new AbstractStack(other.stack_);
     }
     else
     {
         // Right now we only create phis for pri/alt.
         joinRegs(Register.Pri, other.stack_.pri);
         joinRegs(Register.Alt, other.stack_.alt);
     }
 }
示例#4
0
 public void push(DDeclareLocal local)
 {
     stack_.Add(new StackEntry(local, local.value));
     local.setOffset(depth);
 }