cvsuser     02/07/15 14:01:28

  Modified:    .        assemble.pl core.ops
  Log:
  core.ops cleanup by Sean O'Rourke, reduces noise and removes decrepit
  op versions.
  
  Revision  Changes    Path
  1.80      +5 -0      parrot/assemble.pl
  
  Index: assemble.pl
  ===================================================================
  RCS file: /cvs/public/parrot/assemble.pl,v
  retrieving revision 1.79
  retrieving revision 1.80
  diff -u -w -r1.79 -r1.80
  --- assemble.pl       15 Jul 2002 17:24:15 -0000      1.79
  +++ assemble.pl       15 Jul 2002 21:01:28 -0000      1.80
  @@ -937,6 +937,11 @@
           _to_keyed_integer($_);
           push @{$_->[0]}, ['ic',0+$1];
         }
  +      elsif($temp=~s/^\[($flt_re)\]//) {
  +        $suffixes .= "_nc";
  +     _to_keyed($_);
  +        push @{$_->[0]}, $self->_numeric_constant($1);
  +      }
         elsif($temp=~s/^($bin_re)//) {     # 0b1101
           my $val = $1;$val=~s/0b//;
           $suffixes .= "_ic";
  
  
  
  1.183     +182 -329  parrot/core.ops
  
  Index: core.ops
  ===================================================================
  RCS file: /cvs/public/parrot/core.ops,v
  retrieving revision 1.182
  retrieving revision 1.183
  diff -u -w -r1.182 -r1.183
  --- core.ops  11 Jul 2002 06:02:55 -0000      1.182
  +++ core.ops  15 Jul 2002 21:01:28 -0000      1.183
  @@ -513,62 +513,6 @@
   
   Set $1 to $2.
   
  -=item B<set>(out PMC, in INT, in INT)
  -
  -=item B<set>(out PMC, in NUM, in INT)
  -
  -=item B<set>(out PMC, in STR, in INT)
  -
  -=item B<set>(out PMC, in INT, in NUM)
  -
  -=item B<set>(out PMC, in NUM, in NUM)
  -
  -=item B<set>(out PMC, in STR, in NUM)
  -
  -=item B<set>(out PMC, in INT, in STR)
  -
  -=item B<set>(out PMC, in NUM, in STR)
  -
  -=item B<set>(out PMC, in STR, in STR)
  -
  -=item B<set>(out PMC, in INT, in PMC)
  -
  -=item B<set>(out PMC, in NUM, in PMC)
  -
  -=item B<set>(out PMC, in STR, in PMC)
  -
  -Set the entry of $1 accessed by $2 to $3, ie:
  -
  -    $1[$2] = $3;
  -
  -=item B<set>(out INT, in PMC, in INT)
  -
  -=item B<set>(out INT, in PMC, in NUM)
  -
  -=item B<set>(out INT, in PMC, in STR)
  -
  -=item B<set>(out NUM, in PMC, in INT)
  -
  -=item B<set>(out NUM, in PMC, in NUM)
  -
  -=item B<set>(out NUM, in PMC, in STR)
  -
  -=item B<set>(out STR, in PMC, in INT)
  -
  -=item B<set>(out STR, in PMC, in NUM)
  -
  -=item B<set>(out STR, in PMC, in STR)
  -
  -=item B<set>(out PMC, in PMC, in INT)
  -
  -=item B<set>(out PMC, in PMC, in NUM)
  -
  -=item B<set>(out PMC, in PMC, in STR)
  -
  -Set $1 to the entry of $2 accessed by $3, ie:
  -
  -    $1 = $2[$3];
  -
   =cut
   
   inline op set(out INT, in INT) {
  @@ -656,446 +600,343 @@
     goto NEXT();
   }
   
  -inline op set (out PMC, in INT, in INT)  {
  -    KEY key;
  +=item B<set>(out PMC, out PMC, in PMC, in PMC)
   
  -    MAKE_KEY(key, $2, enum_key_int, int_val);
  +Set the entry of $1 accessed by $2 to the entry of $3 accessed by
  +$4, ie:
   
  -    $1->vtable->set_integer_keyed(interpreter, $1, &key, $3);
  +    $1[$2] = $3[$4];
  +
  +=cut
  +
  +inline op set (out PMC, in PMC, in PMC, in PMC)  {
  +    KEY src_key, dest_key;
  +    MAKE_KEY(src_key, $2, enum_key_pmc, pmc_val);
  +    MAKE_KEY(dest_key, $4, enum_key_pmc, pmc_val);
  +    $1->vtable->set_pmc_keyed(interpreter, 
  +                    $1, $2 ? &src_key : NULL, $3, $4 ? &dest_key : NULL);
       goto NEXT();
   }
   
  -inline op set (out PMC, in NUM, in INT)  {
  -    KEY key;
  +=head2 Keyed set operations: Px[ Ix|KEY ] = Bx
   
  -    MAKE_KEY(key, $2, enum_key_num, num_val);
  +=item B<set_keyed_integer>(out PMC, in INT, in INT)
   
  -    $1->vtable->set_integer_keyed(interpreter, $1, &key, $3);
  -    goto NEXT();
  -}
  +=item B<set_keyed_integer>(out PMC, in INT, in NUM)
   
  -inline op set (out PMC, in STR, in INT)  {
  -    KEY key;
  +=item B<set_keyed_integer>(out PMC, in INT, in STR)
   
  -    MAKE_KEY(key, $2, enum_key_string, struct_val);
  +=item B<set_keyed_integer>(out PMC, in INT, in PMC)
  +
  +=cut
   
  +inline op set_keyed_integer (out PMC, in INT, in INT)  {
  +    KEY key;
  +    MAKE_KEY(key, $2, enum_key_int, int_val);
       $1->vtable->set_integer_keyed(interpreter, $1, &key, $3);
       goto NEXT();
   }
   
  -inline op set (out PMC, in INT, in NUM)  {
  +inline op set_keyed_integer (out PMC, in INT, in NUM)  {
       KEY key;
  -
       MAKE_KEY(key, $2, enum_key_int, int_val);
  -
       $1->vtable->set_number_keyed(interpreter, $1, &key, $3);
       goto NEXT();
   }
   
  -inline op set (out PMC, in NUM, in NUM)  {
  +inline op set_keyed_integer (out PMC, in INT, in STR)  {
       KEY key;
  -
  -    MAKE_KEY(key, $2, enum_key_num, num_val);
  -
  -    $1->vtable->set_number_keyed(interpreter, $1, &key, $3);
  +    MAKE_KEY(key, $2, enum_key_int, int_val);
  +    $1->vtable->set_string_keyed(interpreter, $1, &key, $3);
       goto NEXT();
   }
   
  -inline op set (out PMC, in STR, in NUM)  {
  +inline op set_keyed_integer (out PMC, in INT, in PMC)  {
       KEY key;
  -
  -    MAKE_KEY(key, $2, enum_key_string, struct_val);
  -
  -    $1->vtable->set_number_keyed(interpreter, $1, &key, $3);
  +    MAKE_KEY(key, $2, enum_key_int, int_val);
  +    $1->vtable->set_pmc_keyed(interpreter, $1, &key, $3, NULL);
       goto NEXT();
   }
   
  -inline op set (out PMC, in INT, in STR)  {
  -    KEY key;
  +=item B<set_keyed_integer>(out PMC, in KEY, in INT)
   
  -    MAKE_KEY(key, $2, enum_key_int, int_val);
  +=item B<set_keyed_integer>(out PMC, in KEY, in NUM)
   
  -    $1->vtable->set_string_keyed(interpreter, $1, &key, $3);
  -    goto NEXT();
  -}
  +=item B<set_keyed_integer>(out PMC, in KEY, in STR)
   
  -inline op set (out PMC, in NUM, in STR)  {
  -    KEY key;
  +=item B<set_keyed_integer>(out PMC, in KEY, in PMC)
   
  -    MAKE_KEY(key, $2, enum_key_num, num_val);
  +=cut
   
  -    $1->vtable->set_string_keyed(interpreter, $1, &key, $3);
  +inline op set_keyed_integer (out PMC, in KEY, in INT)  {
  +    KEY key;
  +    MAKE_KEY(key, $2, enum_key_int, int_val);
  +    $1->vtable->set_integer_keyed(interpreter, $1, &key, $3);
       goto NEXT();
   }
   
  -inline op set (out PMC, in STR, in STR)  {
  +inline op set_keyed_integer (out PMC, in KEY, in NUM)  {
       KEY key;
  +    MAKE_KEY(key, $2, enum_key_int, int_val);
  +    $1->vtable->set_number_keyed(interpreter, $1, &key, $3);
  +    goto NEXT();
  +}
   
  -    MAKE_KEY(key, $2, enum_key_string, struct_val);
  -
  +inline op set_keyed_integer (out PMC, in KEY, in STR)  {
  +    KEY key;
  +    MAKE_KEY(key, $2, enum_key_int, int_val);
       $1->vtable->set_string_keyed(interpreter, $1, &key, $3);
       goto NEXT();
   }
   
  -inline op set (out PMC, in INT, in PMC)  {
  +inline op set_keyed_integer (out PMC, in KEY, in PMC)  {
       KEY key;
  -
       MAKE_KEY(key, $2, enum_key_int, int_val);
  -
       $1->vtable->set_pmc_keyed(interpreter, $1, &key, $3, NULL);
       goto NEXT();
   }
   
  -inline op set (out PMC, in NUM, in PMC)  {
  -    KEY key;
  +=head2 Keyed set operations: Ax = Px[ Ix|KEY ]
   
  -    MAKE_KEY(key, $2, enum_key_num, num_val);
  +=cut
   
  -    $1->vtable->set_pmc_keyed(interpreter, $1, &key, $3, NULL);
  -    goto NEXT();
  -}
  +=item B<set_keyed_integer>(out INT, in PMC, in INT)
   
  -inline op set (out PMC, in STR, in PMC)  {
  -    KEY key;
  +=item B<set_keyed_integer>(out NUM, in PMC, in INT)
   
  -    MAKE_KEY(key, $2, enum_key_string, struct_val);
  +=item B<set_keyed_integer>(out STR, in PMC, in INT)
   
  -    $1->vtable->set_pmc_keyed(interpreter, $1, NULL, $3, &key);
  -    goto NEXT();
  -}
  +=item B<set_keyed_integer>(out PMC, in PMC, in INT)
   
  -inline op set(out INT, in PMC, in INT) {
  +=cut
  +
  +inline op set_keyed_integer (out INT, in PMC, in INT)  {
     KEY key;
     MAKE_KEY(key, $3, enum_key_int, int_val);
     $1 = $2->vtable->get_integer_keyed(interpreter, $2, &key);
     goto NEXT();
   }
   
  -inline op set(out INT, in PMC, in NUM) {
  +inline op set_keyed_integer (out NUM, in PMC, in INT)  {
     KEY key;
  -  MAKE_KEY(key, $3, enum_key_num, num_val);
  -  $1 = $2->vtable->get_integer_keyed(interpreter, $2, &key);
  +    MAKE_KEY(key, $3, enum_key_int, int_val);
  +    $1 = $2->vtable->get_number_keyed(interpreter, $2, &key);
     goto NEXT();
   }
   
  -inline op set(out INT, in PMC, in STR) {
  +inline op set_keyed_integer (out STR, in PMC, in INT)  {
     KEY key;
  -  MAKE_KEY(key, $3, enum_key_string, struct_val);
  -  $1 = $2->vtable->get_integer_keyed(interpreter, $2, &key);
  +    MAKE_KEY(key, $3, enum_key_int, int_val);
  +    $1 = $2->vtable->get_string_keyed(interpreter, $2, &key);
     goto NEXT();
   }
   
  -inline op set(out NUM, in PMC, in INT) {
  +inline op set_keyed_integer (out PMC, in PMC, in INT) {
     KEY key;
     MAKE_KEY(key, $3, enum_key_int, int_val);
  -  $1 = $2->vtable->get_number_keyed(interpreter, $2, &key);
  +    $1 = $2->vtable->get_pmc_keyed(interpreter, $2, &key);
     goto NEXT();
   }
   
  -inline op set(out NUM, in PMC, in NUM) {
  -  KEY key;
  -  MAKE_KEY(key, $3, enum_key_num, num_val);
  -  $1 = $2->vtable->get_number_keyed(interpreter, $2, &key);
  -  goto NEXT();
  -}
  +=item B<set_keyed_integer>(out INT, in PMC, in KEY)
   
  -inline op set(out NUM, in PMC, in STR) {
  -  KEY key;
  -  MAKE_KEY(key, $3, enum_key_string, struct_val);
  -  $1 = $2->vtable->get_number_keyed(interpreter, $2, &key);
  -  goto NEXT();
  -}
  +=item B<set_keyed_integer>(out NUM, in PMC, in KEY)
  +
  +=item B<set_keyed_integer>(out STR, in PMC, in KEY)
   
  -inline op set(out STR, in PMC, in INT) {
  +=item B<set_keyed_integer>(out PMC, in PMC, in KEY)
  +
  +=cut
  +
  +inline op set_keyed_integer (out INT, in PMC, in KEY)  {
     KEY key;
     MAKE_KEY(key, $3, enum_key_int, int_val);
  -  $1 = $2->vtable->get_string_keyed(interpreter, $2, &key);
  +    $1 = $2->vtable->get_integer_keyed(interpreter, $2, &key);
     goto NEXT();
   }
   
  -inline op set(out STR, in PMC, in NUM) {
  +inline op set_keyed_integer (out NUM, in PMC, in KEY)  {
     KEY key;
  -  MAKE_KEY(key, $3, enum_key_num, num_val);
  -  $1 = $2->vtable->get_string_keyed(interpreter, $2, &key);
  +    MAKE_KEY(key, $3, enum_key_int, int_val);
  +    $1 = $2->vtable->get_number_keyed(interpreter, $2, &key);
     goto NEXT();
   }
   
  -inline op set(out STR, in PMC, in STR) {
  +inline op set_keyed_integer (out STR, in PMC, in KEY)  {
     KEY key;
  -  MAKE_KEY(key, $3, enum_key_string, struct_val);
  +    MAKE_KEY(key, $3, enum_key_int, int_val);
     $1 = $2->vtable->get_string_keyed(interpreter, $2, &key);
     goto NEXT();
   }
   
  -inline op set(out PMC, in PMC, in INT) {
  +inline op set_keyed_integer (out PMC, in PMC, in KEY) {
     KEY key;
     MAKE_KEY(key, $3, enum_key_int, int_val);
     $1 = $2->vtable->get_pmc_keyed(interpreter, $2, &key);
     goto NEXT();
   }
   
  -inline op set(out PMC, in PMC, in NUM) {
  -  KEY key;
  -  MAKE_KEY(key, $3, enum_key_num, num_val);
  -  $1 = $2->vtable->get_pmc_keyed(interpreter, $2, &key);
  -  goto NEXT();
  -}
  +=head2 Keyed set operations: Px[Sx] = Bx
   
  -inline op set(out PMC, in PMC, in STR) {
  -  KEY key;
  -  MAKE_KEY(key, $3, enum_key_string, struct_val);
  -  $1 = $2->vtable->get_pmc_keyed(interpreter, $2, &key);
  -  goto NEXT();
  -}
  +=item B<set_keyed>(out PMC, in STR, in INT)
   
  -=item B<set>(out INT, in PMC, in KEY)
  +=item B<set_keyed>(out PMC, in STR, in NUM)
   
  -Not implemented yet, working on it
  +=item B<set_keyed>(out PMC, in STR, in STR)
   
  -=item B<set>(out PMC, in KEY, in INT)
  +=item B<set_keyed>(out PMC, in STR, in PMC)
   
   =cut
   
  -inline op set(out INT, in PMC, in KEY) {
  -  fprintf(stderr,"*** calling keyed set\n");
  -  goto NEXT();
  -}
  -
  -inline op set(out PMC, in KEY, in INT) {
  -  fprintf(stderr,"*** calling keyed set\n");
  +inline op set_keyed (out PMC, in STR, in INT)  {
  +    KEY key;
  +    MAKE_KEY(key, $2, enum_key_string, struct_val);
  +    $1->vtable->set_integer_keyed(interpreter, $1, &key, $3);
     goto NEXT();
   }
   
  -=item B<set>(out PMC, out PMC, in PMC, in PMC)
  -
  -Set the entry of $1 accessed by $2 to the entry of $3 accessed by
  -$4, ie:
  -
  -    $1[$2] = $3[$4];
  -
  -=cut
  -
  -inline op set (out PMC, in PMC, in PMC, in PMC)  {
  -    KEY src_key, dest_key;
  -
  -    MAKE_KEY(src_key, $2, enum_key_pmc, pmc_val);
  -    MAKE_KEY(dest_key, $4, enum_key_pmc, pmc_val);
  -
  -    $1->vtable->set_pmc_keyed(interpreter, 
  -                    $1, $2 ? &src_key : NULL, $3, $4 ? &dest_key : NULL);
  +inline op set_keyed (out PMC, in STR, in NUM)  {
  +    KEY key;
  +    MAKE_KEY(key, $2, enum_key_string, struct_val);
  +    $1->vtable->set_number_keyed(interpreter, $1, &key, $3);
       goto NEXT();
   }
   
  -=item B<set_keyed_integer>(out PMC, in INT, in INT)
  -
  -=cut
  -
  -inline op set_keyed_integer (out PMC, in INT, in INT)  {
  +inline op set_keyed (out PMC, in STR, in STR)  {
       KEY key;
  -
  -    MAKE_KEY(key, $2, enum_key_int, int_val);
  -
  -    $1->vtable->set_integer_keyed(interpreter, $1, &key, $3);
  +    MAKE_KEY(key, $2, enum_key_string, struct_val);
  +    $1->vtable->set_string_keyed(interpreter, $1, &key, $3);
       goto NEXT();
   }
   
  -=item B<set_keyed_integer>(out INT, in PMC, in INT)
  -
  -=cut
  -
  -inline op set_keyed_integer (out INT, in PMC, in INT)  {
  +inline op set_keyed (out PMC, in STR, in PMC)  {
       KEY key;
  -
  -    MAKE_KEY(key, $3, enum_key_int, int_val);
  -
  -    $1 = $2->vtable->get_integer_keyed(interpreter, $2, &key);
  +    MAKE_KEY(key, $2, enum_key_string, struct_val);
  +    $1->vtable->set_pmc_keyed(interpreter, $1, NULL, $3, &key);
       goto NEXT();
   }
   
  -=item B<set_keyed_integer>(out PMC, in INT, in NUM)
  -
  -=cut
  +=head2 Keyed set operations: Ax = Px[Sx]
   
  -inline op set_keyed_integer (out PMC, in INT, in NUM)  {
  -    KEY key;
  +=item B<set_keyed>(out INT, in PMC, in STR)
   
  -    MAKE_KEY(key, $2, enum_key_int, int_val);
  +=item B<set_keyed>(out NUM, in PMC, in STR)
   
  -    $1->vtable->set_number_keyed(interpreter, $1, &key, $3);
  -    goto NEXT();
  -}
  +=item B<set_keyed>(out STR, in PMC, in STR)
   
  -=item B<set_keyed_integer>(out NUM, in PMC, in INT)
  +=item B<set_keyed>(out PMC, in PMC, in STR)
   
   =cut
   
  -inline op set_keyed_integer (out NUM, in PMC, in INT)  {
  +inline op set_keyed (out INT, in PMC, in STR)  {
       KEY key;
  -
  -    MAKE_KEY(key, $3, enum_key_int, int_val);
  -
  -    $1 = $2->vtable->get_number_keyed(interpreter, $2, &key);
  +    MAKE_KEY(key, $3, enum_key_string, struct_val);
  +    $1 = $2->vtable->get_integer_keyed(interpreter, $2, &key);
       goto NEXT();
   }
   
  -=item B<set_keyed_integer>(out PMC, in INT, in STR)
  -
  -=cut
  -
  -inline op set_keyed_integer (out PMC, in INT, in STR)  {
  +inline op set_keyed (out NUM, in PMC, in STR)  {
       KEY key;
  -
  -    MAKE_KEY(key, $2, enum_key_int, int_val);
  -
  -    $1->vtable->set_string_keyed(interpreter, $1, &key, $3);
  +    MAKE_KEY(key, $3, enum_key_string, struct_val);
  +    $1 = $2->vtable->get_number_keyed(interpreter, $2, &key);
       goto NEXT();
   }
   
  -=item B<set_keyed_integer>(out STR, in PMC, in INT)
  -
  -=cut
  -
  -inline op set_keyed_integer (out STR, in PMC, in INT)  {
  +inline op set_keyed (out STR, in PMC, in STR)  {
       KEY key;
  -
  -    MAKE_KEY(key, $3, enum_key_int, int_val);
  -
  +    MAKE_KEY(key, $3, enum_key_string, struct_val);
       $1 = $2->vtable->get_string_keyed(interpreter, $2, &key);
       goto NEXT();
   }
   
  -=item B<set_keyed_integer>(out PMC, in KEY, in INT)
  -
  -=cut
  -
  -inline op set_keyed_integer (out PMC, in KEY, in INT)  {
  +inline op set_keyed (out PMC, in PMC, in STR)  {
       KEY key;
  -    MAKE_KEY(key, $2, enum_key_int, int_val);
  -    $1->vtable->set_integer_keyed(interpreter, $1, &key, $3);
  +    MAKE_KEY(key, $3, enum_key_string, struct_val);
  +    $1 = $2->vtable->get_pmc_keyed(interpreter, $2, &key);
       goto NEXT();
   }
   
  -=item B<set_keyed_integer>(out INT, in PMC, in KEY)
  +=head2 Keyed set operations: Px[Nx] = Bx
   
  -=cut
  +=item B<set_keyed>(out PMC, in NUM, in INT)
   
  -inline op set_keyed_integer (out INT, in PMC, in KEY)  {
  -    KEY key;
  -    MAKE_KEY(key, $3, enum_key_int, int_val);
  -    $1 = $2->vtable->get_integer_keyed(interpreter, $2, &key);
  -    goto NEXT();
  -}
  +=item B<set_keyed>(out PMC, in NUM, in NUM)
   
  -=item B<set_keyed_integer>(out PMC, in KEY, in NUM)
  +=item B<set_keyed>(out PMC, in NUM, in STR)
  +
  +=item B<set_keyed>(out PMC, in NUM, in PMC)
   
   =cut
   
  -inline op set_keyed_integer (out PMC, in KEY, in NUM)  {
  +inline op set_keyed (out PMC, in NUM, in INT)  {
       KEY key;
  -    MAKE_KEY(key, $2, enum_key_int, int_val);
  -    $1->vtable->set_number_keyed(interpreter, $1, &key, $3);
  +    MAKE_KEY(key, $2, enum_key_num, num_val);
  +    $1->vtable->set_integer_keyed(interpreter, $1, &key, $3);
       goto NEXT();
   }
   
  -=item B<set_keyed_integer>(out NUM, in PMC, in KEY)
  -
  -=cut
  -
  -inline op set_keyed_integer (out NUM, in PMC, in KEY)  {
  +inline op set_keyed (out PMC, in NUM, in NUM)  {
       KEY key;
  -    MAKE_KEY(key, $3, enum_key_int, int_val);
  -    $1 = $2->vtable->get_number_keyed(interpreter, $2, &key);
  +    MAKE_KEY(key, $2, enum_key_num, num_val);
  +    $1->vtable->set_number_keyed(interpreter, $1, &key, $3);
       goto NEXT();
   }
   
  -=item B<set_keyed_integer>(out PMC, in KEY, in STR)
  -
  -=cut
  -
  -inline op set_keyed_integer (out PMC, in KEY, in STR)  {
  +inline op set_keyed (out PMC, in NUM, in STR)  {
       KEY key;
  -    MAKE_KEY(key, $2, enum_key_int, int_val);
  +    MAKE_KEY(key, $2, enum_key_num, num_val);
       $1->vtable->set_string_keyed(interpreter, $1, &key, $3);
       goto NEXT();
   }
   
  -=item B<set_keyed_integer>(out STR, in PMC, in KEY)
  -
  -=cut
  -
  -inline op set_keyed_integer (out STR, in PMC, in KEY)  {
  +inline op set_keyed (out PMC, in NUM, in PMC)  {
       KEY key;
  -    MAKE_KEY(key, $3, enum_key_int, int_val);
  -    $1 = $2->vtable->get_string_keyed(interpreter, $2, &key);
  +    MAKE_KEY(key, $2, enum_key_num, num_val);
  +    $1->vtable->set_pmc_keyed(interpreter, $1, NULL, $3, &key);
       goto NEXT();
   }
   
  -=item B<set_keyed>(out PMC, in STR, in INT)
  +=head2 Keyed set operations: Ax = Px[Nx]
   
  -=cut
  +=item B<set_keyed>(out INT, in PMC, in NUM)
   
  -inline op set_keyed (out PMC, in STR, in INT)  {
  -    KEY key;
  -    MAKE_KEY(key, $2, enum_key_string, struct_val);
  -    $1->vtable->set_integer_keyed(interpreter, $1, &key, $3);
  -    goto NEXT();
  -}
  +=item B<set_keyed>(out NUM, in PMC, in NUM)
   
  -=item B<set_keyed>(out INT, in PMC, in STR)
  +=item B<set_keyed>(out STR, in PMC, in NUM)
   
  -=cut
  -
  -inline op set_keyed (out INT, in PMC, in STR)  {
  -    KEY key;
  -    MAKE_KEY(key, $3, enum_key_string, struct_val);
  -    $1 = $2->vtable->get_integer_keyed(interpreter, $2, &key);
  -    goto NEXT();
  -}
  -
  -=item B<set_keyed>(out PMC, in STR, in NUM)
  +=item B<set_keyed>(out PMC, in PMC, in NUM)
   
   =cut
   
  -inline op set_keyed (out PMC, in STR, in NUM)  {
  +inline op set_keyed (out INT, in PMC, in NUM)  {
       KEY key;
  -    MAKE_KEY(key, $2, enum_key_string, struct_val);
  -    $1->vtable->set_number_keyed(interpreter, $1, &key, $3);
  +    MAKE_KEY(key, $3, enum_key_num, num_val);
  +    $1 = $2->vtable->get_integer_keyed(interpreter, $2, &key);
       goto NEXT();
   }
   
  -=item B<set_keyed>(out NUM, in PMC, in STR)
  -
  -=cut
  -
  -inline op set_keyed (out NUM, in PMC, in STR)  {
  +inline op set_keyed (out NUM, in PMC, in NUM)  {
       KEY key;
  -    MAKE_KEY(key, $3, enum_key_string, struct_val);
  +    MAKE_KEY(key, $3, enum_key_num, num_val);
       $1 = $2->vtable->get_number_keyed(interpreter, $2, &key);
       goto NEXT();
   }
   
  -=item B<set_keyed>(out PMC, in STR, in STR)
  -
  -=cut
  -
  -inline op set_keyed (out PMC, in STR, in STR)  {
  +inline op set_keyed (out STR, in PMC, in NUM)  {
       KEY key;
  -    MAKE_KEY(key, $2, enum_key_string, struct_val);
  -    $1->vtable->set_string_keyed(interpreter, $1, &key, $3);
  +    MAKE_KEY(key, $3, enum_key_num, num_val);
  +    $1 = $2->vtable->get_string_keyed(interpreter, $2, &key);
       goto NEXT();
   }
   
  -=item B<set_keyed>(out STR, in PMC, in STR)
  -
  -=cut
  -
  -inline op set_keyed (out STR, in PMC, in STR)  {
  +inline op set_keyed (out PMC, in PMC, in NUM)  {
       KEY key;
  -    MAKE_KEY(key, $3, enum_key_string, struct_val);
  -    $1 = $2->vtable->get_string_keyed(interpreter, $2, &key);
  +    MAKE_KEY(key, $3, enum_key_num, num_val);
  +    $1 = $2->vtable->get_pmc_keyed(interpreter, $2, &key);
       goto NEXT();
   }
   
  +
   =item B<clone>(out PMC, in PMC)
   
   Copies a PMC $1 to $2.
  @@ -2967,6 +2808,8 @@
   
   =item B<shl>(out INT, in INT, in INT)
   
  +=item B<shl>(out PMC, in PMC, in PMC)
  +
   Set $1 to the value of $2 shifted left by $3 bits.
   
   =cut
  @@ -2976,11 +2819,17 @@
     goto NEXT();
   }
   
  +inline op shl(out PMC, in PMC, in PMC) {
  +  $2->vtable->bitwise_shl(interpreter, $2, $3, $1);
  +  goto NEXT();
  +}
   
   ########################################
   
   =item B<shr>(out INT, in INT, in INT)
   
  +=item B<shr>(out PMC, in PMC, in PMC)
  +
   Set $1 to the value of $2 shifted right by $3 bits.
   
   =cut
  @@ -2990,6 +2839,10 @@
     goto NEXT();
   }
   
  +inline op shr(out PMC, in PMC, in PMC) {
  +  $2->vtable->bitwise_shr(interpreter, $2, $3, $1);
  +  goto NEXT();
  +}
   
   ########################################
   
  
  
  


Reply via email to