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();
+}
########################################