Skip to content

Commit

Permalink
Merge branch 'master' of github.com:MoarVM/MoarVM
Browse files Browse the repository at this point in the history
  • Loading branch information
diakopter committed Aug 18, 2013
2 parents 8f05914 + 4a11514 commit fd6c056
Show file tree
Hide file tree
Showing 7 changed files with 59 additions and 23 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -58,6 +58,7 @@ nqp-cc/*.moarvm
nqp-cc/temp.output
nqp-cc/*.mvmdump
nqp-cc/*.mastdump
nqp-cc/nqp-src/QASTMoar.nqp
*.vsp
*.psess
/nmake.cmd
Expand Down
2 changes: 1 addition & 1 deletion nqp-cc/nqp-src/NQP.nqp
Expand Up @@ -3,7 +3,7 @@
# From src/NQP/World.nqp

use NQPP6QRegexMoar;
#use QAST;
use QASTMoar;

class NQP::World is HLL::World {
# The stack of lexical pads, actually as QAST::Block objects. The
Expand Down
2 changes: 1 addition & 1 deletion nqp-cc/nqp-src/NQPP6QRegex.nqp
Expand Up @@ -4,7 +4,7 @@

use QRegexMoar;
use NQPHLLMoar;
#use QASTCompilerMAST;
use QASTMoar;

class QRegex::P6Regex::World is HLL::World {
method create_code($past, $name) {
Expand Down
4 changes: 4 additions & 0 deletions nqp-cc/src/QASTCompilerMAST.nqp
Expand Up @@ -4,6 +4,7 @@ use QASTRegexCompilerMAST;
# Disable compilatin of deserialization stuff while still in development.
my $ENABLE_SC_COMP := 1;

#?start_redecl
my $MVM_reg_void := 0; # not really a register; just a result/return kind marker
my $MVM_reg_int8 := 1;
my $MVM_reg_int16 := 2;
Expand All @@ -13,6 +14,7 @@ my $MVM_reg_num32 := 5;
my $MVM_reg_num64 := 6;
my $MVM_reg_str := 7;
my $MVM_reg_obj := 8;
#?end_redecl

# Mapping of QAST::Want type identifiers to return types.
my %WANTMAP := nqp::hash(
Expand Down Expand Up @@ -1254,6 +1256,7 @@ class QAST::MASTCompiler {
}
}

#?start_redecl
sub push_op(@dest, $op, *@args) {
# Resolve the op.
my $bank;
Expand All @@ -1269,3 +1272,4 @@ sub push_op(@dest, $op, *@args) {
|@args
));
}
#?end_redecl
2 changes: 2 additions & 0 deletions nqp-cc/src/QASTOperationsMAST.nqp
Expand Up @@ -10,6 +10,7 @@ my $MVM_operand_write_lex := 4;
my $MVM_operand_rw_mask := 7;

# the register "kind" codes, for expression results and arguments.
#?start_redecl
my $MVM_reg_void := 0; # not really a register; just a result/return kind marker
my $MVM_reg_int8 := 1;
my $MVM_reg_int16 := 2;
Expand All @@ -19,6 +20,7 @@ my $MVM_reg_num32 := 5;
my $MVM_reg_num64 := 6;
my $MVM_reg_str := 7;
my $MVM_reg_obj := 8;
#?end_redecl

my $MVM_operand_int8 := ($MVM_reg_int8 * 8);
my $MVM_operand_int16 := ($MVM_reg_int16 * 8);
Expand Down
34 changes: 13 additions & 21 deletions nqp-cc/tools/build/Makefile.in
Expand Up @@ -71,11 +71,9 @@ CROSSCOMPILE = $(NQP) nqp-moar-cc.nqp --target=mbc --setting=NQPCOREMoar --no
# things being cross-compiled.
NQPLIBS = nqp-mo.moarvm ModuleLoader.class NQPCOREMoar.setting.moarvm \
QASTNodesMoar.moarvm QRegexMoar.moarvm NQPHLLMoar.moarvm \
MASTOps.moarvm MASTNodes.moarvm QASTRegexCompilerMAST.moarvm \
QASTOperationsMAST.moarvm QASTCompilerMAST.moarvm \
NQPP6QRegexMoar.moarvm nqp.moarvm
QASTMoar.moarvm NQPP6QRegexMoar.moarvm nqp.moarvm
NQPLIBPIRS = nqp-mo.pir NQPCOREMoar.setting.pir QASTNodesMoar.pir QRegexMoar.pir \
NQPHLLMoar.pir NQPP6QRegexMoar.pir
NQPHLLMoar.pir QASTMoar.pir NQPP6QRegexMoar.pir

CLEANUPS = \
*.manifest \
Expand Down Expand Up @@ -141,6 +139,9 @@ QASTRegexCompilerMAST.pbc: MASTNodes.pbc MASTOps.pbc QASTOperationsMAST.pbc src/

.pir.pbc:
$(PARROT) -o $@ $*.pir

nqp-src/QASTMoar.nqp: tools/build/moarqast.pl ../lib/MAST/Ops.nqp ../lib/MAST/Nodes.nqp src/QASTRegexCompilerMAST.nqp src/QASTOperationsMAST.nqp src/QASTCompilerMAST.nqp
$(PERL) tools/build/moarqast.pl ../lib/MAST/Ops.nqp ../lib/MAST/Nodes.nqp src/QASTRegexCompilerMAST.nqp src/QASTOperationsMAST.nqp src/QASTCompilerMAST.nqp > nqp-src/QASTMoar.nqp

nqp-mo.pir: nqp-src/nqp-mo.pm $(CROSS_COMP_PBCS)
$(PRECOMPILE_NS) nqp-src/nqp-mo.pm
Expand All @@ -157,7 +158,10 @@ QRegexMoar.pir: nqp-src/QRegex.nqp QASTNodesMoar.pbc $(CROSS_COMP_PBCS)
NQPHLLMoar.pir: nqp-src/NQPHLL.nqp QRegexMoar.pbc $(CROSS_COMP_PBCS)
$(PRECOMPILE) nqp-src/NQPHLL.nqp

NQPP6QRegexMoar.pir: nqp-src/NQPP6QRegex.nqp QRegexMoar.pbc NQPHLLMoar.pbc $(CROSS_COMP_PBCS)
QASTMoar.pir: QRegexMoar.pbc NQPHLLMoar.pbc $(CROSS_COMP_PBCS)
$(PRECOMPILE) nqp-src/QASTMoar.nqp

NQPP6QRegexMoar.pir: nqp-src/NQPP6QRegex.nqp QRegexMoar.pbc NQPHLLMoar.pbc QASTMoar.pbc $(CROSS_COMP_PBCS)
$(PRECOMPILE) nqp-src/NQPP6QRegex.nqp

nqp-mo.moarvm: nqp-src/nqp-mo.pm nqp-mo.pbc $(CROSS_COMP_PBCS)
Expand All @@ -178,25 +182,13 @@ QRegexMoar.moarvm: nqp-src/QRegex.nqp QRegexMoar.pbc QASTNodesMoar.moarvm $(CROS
NQPHLLMoar.moarvm: nqp-src/NQPHLL.nqp NQPHLLMoar.pbc QRegexMoar.moarvm $(CROSS_COMP_PBCS)
$(CROSSCOMPILE) nqp-src/NQPHLL.nqp

MASTOps.moarvm: ../lib/MAST/Ops.nqp MASTNodes.pbc NQPCOREMoar.setting.moarvm MASTOps.pbc
$(CROSSCOMPILE) ../lib/MAST/Ops.nqp

MASTNodes.moarvm: ../lib/MAST/Nodes.nqp NQPCOREMoar.setting.moarvm MASTNodes.pbc
$(CROSSCOMPILE) ../lib/MAST/Nodes.nqp

QASTRegexCompilerMAST.moarvm: QASTRegexCompilerMAST.pbc NQPCOREMoar.setting.moarvm
$(CROSSCOMPILE) src/QASTRegexCompilerMAST.nqp

QASTOperationsMAST.moarvm: QASTOperationsMAST.pbc NQPCOREMoar.setting.moarvm
$(CROSSCOMPILE) src/QASTOperationsMAST.nqp

QASTCompilerMAST.moarvm: QASTCompilerMAST.pbc QASTOperationsMAST.moarvm
$(CROSSCOMPILE) src/QASTCompilerMAST.nqp
QASTMoar.moarvm: nqp-src/QASTMoar.nqp QASTMoar.pbc QRegexMoar.moarvm $(CROSS_COMP_PBCS)
$(CROSSCOMPILE) nqp-src/QASTMoar.nqp

NQPP6QRegexMoar.moarvm: NQPP6QRegexMoar.pbc nqp-src/NQPP6QRegex.nqp NQPHLLMoar.moarvm QRegexMoar.moarvm QASTCompilerMAST.moarvm QASTRegexCompilerMAST.moarvm
NQPP6QRegexMoar.moarvm: NQPP6QRegexMoar.pbc nqp-src/NQPP6QRegex.nqp NQPHLLMoar.moarvm QRegexMoar.moarvm QASTMoar.moarvm
$(CROSSCOMPILE) nqp-src/NQPP6QRegex.nqp

nqp.moarvm: nqp-src/NQP.nqp NQPP6QRegexMoar.moarvm
nqp.moarvm: nqp-src/NQP.nqp NQPP6QRegexMoar.moarvm QASTMoar.moarvm
$(CROSSCOMPILE) nqp-src/NQP.nqp

## testing
Expand Down
37 changes: 37 additions & 0 deletions nqp-cc/tools/build/moarqast.pl
@@ -0,0 +1,37 @@
#!/usr/bin/perl

use strict;
use warnings;
use 5.008;

binmode STDOUT, ':utf8';

my @files = @ARGV;

print <<"END_HEAD";
# This file automatically generated by $0

use QASTNodesMoar;

END_HEAD

foreach my $file (@files) {
print "# From $file\n\n";
open(my $fh, "<:utf8", $file) or die "$file: $!";
my $emit = 1;
while (<$fh>) {
next if /^use [\w:]+;\s*$/;
if (/^\#\?start_redecl/) {
$emit = 0;
}
elsif (/^\#\?end_redecl/) {
$emit = 1;
}
elsif ($emit) {
print;
}
}
close $fh;
}

print "\n# vim: set ft=perl6 nomodifiable :\n";

0 comments on commit fd6c056

Please sign in to comment.