cvsuser     03/07/06 02:24:02

  Modified:    languages/imcc ChangeLog imcc.y instructions.c
                        instructions.h parser_util.c
               languages/imcc/docs syntax.pod
  Log:
  new_p_ic_p
  
  Revision  Changes    Path
  1.17      +5 -0      parrot/languages/imcc/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/public/parrot/languages/imcc/ChangeLog,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -w -r1.16 -r1.17
  --- ChangeLog 4 Jul 2003 08:24:52 -0000       1.16
  +++ ChangeLog 6 Jul 2003 09:23:59 -0000       1.17
  @@ -1,3 +1,8 @@
  +- 2003-07-06 leo
  +
  +     * new instruction:
  +       $Preg = new classname, $Pinitializer
  +
   - 2003-07-03 leo
   
        * switch to PASM/PIR mode, when reading .pasm/.imc include files
  
  
  
  1.65      +3 -2      parrot/languages/imcc/imcc.y
  
  Index: imcc.y
  ===================================================================
  RCS file: /cvs/public/parrot/languages/imcc/imcc.y,v
  retrieving revision 1.64
  retrieving revision 1.65
  diff -u -w -r1.64 -r1.65
  --- imcc.y    2 Jul 2003 13:37:20 -0000       1.64
  +++ imcc.y    6 Jul 2003 09:23:59 -0000       1.65
  @@ -262,7 +262,7 @@
           }
       }
       /* make a new undef */
  -    iNEW(interpreter, preg[0], str_dup("PerlUndef"), 1);
  +    iNEW(interpreter, preg[0], str_dup("PerlUndef"), NULL, 1);
       /* emit the operand */
       nargs = 3;
       keyvec = 0;
  @@ -564,7 +564,8 @@
       |  target '=' var '~' var                { $$ = MK_I(interp, "bxor", R3($1, $3, 
$5)); }
       |  target '=' var '[' keylist ']'   { $$ = iINDEXFETCH(interp, $1, $3, $5); }
       |  var '[' keylist ']' '=' var   { $$ = iINDEXSET(interp, $1, $3, $6); }
  -    |  target '=' NEW classname              { $$ = iNEW(interp, $1, $4, 1); }
  +    |  target '=' NEW classname COMMA var { $$ = iNEW(interp, $1, $4, $6, 1); }
  +    |  target '=' NEW classname              { $$ = iNEW(interp, $1, $4, NULL,1); }
       |  target '=' DEFINED var                { $$ = MK_I(interp, 
"defined",R2($1,$4)); }
       |  target '=' DEFINED var '[' keylist ']' { keyvec=KEY_BIT(2);
                                        $$ = MK_I(interp, "defined", R3($1, $4, $6));}
  
  
  
  1.33      +1 -1      parrot/languages/imcc/instructions.c
  
  Index: instructions.c
  ===================================================================
  RCS file: /cvs/public/parrot/languages/imcc/instructions.c,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -w -r1.32 -r1.33
  --- instructions.c    21 Jun 2003 11:33:37 -0000      1.32
  +++ instructions.c    6 Jul 2003 09:23:59 -0000       1.33
  @@ -532,7 +532,7 @@
                       || strcmp(ins->fmt, "saveall") == 0)) {
               ins = ins->next;
           }
  -        spill_ins = iNEW(interpreter, p31, str_dup("PerlArray"), 0);
  +        spill_ins = iNEW(interpreter, p31, str_dup("PerlArray"), NULL, 0);
           insert_ins(ins, spill_ins);
       }
       if (emitters[emitter].new_sub)
  
  
  
  1.23      +2 -1      parrot/languages/imcc/instructions.h
  
  Index: instructions.h
  ===================================================================
  RCS file: /cvs/public/parrot/languages/imcc/instructions.h,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -w -r1.22 -r1.23
  --- instructions.h    21 Jun 2003 11:33:37 -0000      1.22
  +++ instructions.h    6 Jul 2003 09:23:59 -0000       1.23
  @@ -78,7 +78,8 @@
                char *fmt, SymReg **regs, int nargs, int keyv, int emit);
   Instruction * INS_LABEL(SymReg * r0, int emit);
   
  -Instruction * iNEW(struct Parrot_Interp *,SymReg * r0, char * type, int emit);
  +Instruction * iNEW(struct Parrot_Interp *,SymReg * r0, char * type,
  +     SymReg *init, int emit);
   Instruction * emitb(Instruction *);
   
   int instruction_reads(Instruction *, SymReg *);
  
  
  
  1.15      +8 -2      parrot/languages/imcc/parser_util.c
  
  Index: parser_util.c
  ===================================================================
  RCS file: /cvs/public/parrot/languages/imcc/parser_util.c,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -w -r1.14 -r1.15
  --- parser_util.c     31 May 2003 23:37:42 -0000      1.14
  +++ parser_util.c     6 Jul 2003 09:23:59 -0000       1.15
  @@ -26,7 +26,8 @@
    * new P, .SomeThing
    */
   Instruction *
  -iNEW(struct Parrot_Interp *interpreter, SymReg * r0, char * type, int emit)
  +iNEW(struct Parrot_Interp *interpreter, SymReg * r0, char * type,
  +        SymReg *init, int emit)
   {
       char fmt[256];
       SymReg *pmc;
  @@ -42,6 +43,11 @@
       free(type);
       regs[0] = r0;
       regs[1] = pmc;
  +    if (init) {
  +        regs[2] = init;
  +        nargs = 3;
  +    }
  +    else
       nargs = 2;
       return iANY(interpreter, "new", fmt, regs, emit);
   }
  
  
  
  1.3       +4 -0      parrot/languages/imcc/docs/syntax.pod
  
  Index: syntax.pod
  ===================================================================
  RCS file: /cvs/public/parrot/languages/imcc/docs/syntax.pod,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -w -r1.2 -r1.3
  --- syntax.pod        12 Dec 2002 09:05:25 -0000      1.2
  +++ syntax.pod        6 Jul 2003 09:24:02 -0000       1.3
  @@ -196,6 +196,10 @@
   
   B<new var, .type>
   
  +=item <var> = new <type>, <var>
  +
  +B<new var, .type, var>
  +
   =item <var> = defined <var>
   
   B<defined var, var>
  
  
  

Reply via email to