[svn:parrot] r44903 - in branches/ops_pct/compilers/opsc/src/Ops: . Compiler
bacek at svn.parrot.org
bacek at svn.parrot.org
Fri Mar 12 21:48:27 UTC 2010
Author: bacek
Date: Fri Mar 12 21:48:22 2010
New Revision: 44903
URL: https://trac.parrot.org/parrot/changeset/44903
Log:
Use OpLib to assign op codes
Modified:
branches/ops_pct/compilers/opsc/src/Ops/Compiler.pm
branches/ops_pct/compilers/opsc/src/Ops/Compiler/Actions.pm
branches/ops_pct/compilers/opsc/src/Ops/File.pm
Modified: branches/ops_pct/compilers/opsc/src/Ops/Compiler.pm
==============================================================================
--- branches/ops_pct/compilers/opsc/src/Ops/Compiler.pm Fri Mar 12 21:47:48 2010 (r44902)
+++ branches/ops_pct/compilers/opsc/src/Ops/Compiler.pm Fri Mar 12 21:48:22 2010 (r44903)
@@ -10,5 +10,9 @@
Ops::Compiler.parseactions(Ops::Compiler::Actions);
}
+method set_oplib($oplib) {
+ $Ops::Compiler::Actions::OPLIB := $oplib;
+ $Ops::Compiler::Actions::CODE := $oplib.max_op_num;
+}
# vim: ft=perl6 expandtab shiftwidth=4:
Modified: branches/ops_pct/compilers/opsc/src/Ops/Compiler/Actions.pm
==============================================================================
--- branches/ops_pct/compilers/opsc/src/Ops/Compiler/Actions.pm Fri Mar 12 21:47:48 2010 (r44902)
+++ branches/ops_pct/compilers/opsc/src/Ops/Compiler/Actions.pm Fri Mar 12 21:48:22 2010 (r44903)
@@ -36,9 +36,18 @@
for $<op> {
my $ops := $_.ast;
my $skiptable := $OPLIB.skiptable;
+ my $optable := $OPLIB.optable;
for @($ops) -> $op {
- if !$skiptable.exists($op.full_name) {
- $op<code> := $CODE++;
+ my $full_name := $op.full_name;
+ if ! $skiptable.exists($full_name) {
+ if $optable.exists($full_name) {
+ $op<code> := $optable{$full_name};
+ }
+ else {
+ say('# experimental. Not in ops.num ' ~ $full_name);
+ $op<code> := $CODE++;
+ }
+
$past<ops>.push($op);
}
}
Modified: branches/ops_pct/compilers/opsc/src/Ops/File.pm
==============================================================================
--- branches/ops_pct/compilers/opsc/src/Ops/File.pm Fri Mar 12 21:47:48 2010 (r44902)
+++ branches/ops_pct/compilers/opsc/src/Ops/File.pm Fri Mar 12 21:48:22 2010 (r44903)
@@ -189,6 +189,9 @@
self<ops> := list(); # Ops
self<preamble>:= '';
+ self<compiler>:= pir::compreg__Ps('Ops');
+ self<compiler>.set_oplib($oplib);
+
self._set_version();
for @files { self.read_ops( $_, $nolines ) }
@@ -233,7 +236,7 @@
}
method compile_ops($str) {
- my $compiler := pir::compreg__Ps('Ops');
+ my $compiler := self<compiler>;
my $past := $compiler.compile($str, :target('past'));
for @($past<ops>) {
More information about the parrot-commits
mailing list