Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
First attempt at adding a CORE.d setting
  • Loading branch information
niner committed Jan 13, 2016
1 parent 007f027 commit f6ea655
Show file tree
Hide file tree
Showing 8 changed files with 61 additions and 10 deletions.
2 changes: 1 addition & 1 deletion Configure.pl
Expand Up @@ -151,7 +151,7 @@
}
}

for my $target (qw/common_bootstrap_sources moar_core_sources/) {
for my $target (qw/common_bootstrap_sources moar_core_sources moar_core_d_sources/) {
open my $FILELIST, '<', "tools/build/$target"
or die "Cannot read 'tools/build/$target': $!";
my @lines;
Expand Down
16 changes: 15 additions & 1 deletion src/Perl6/Compiler.nqp
Expand Up @@ -44,6 +44,7 @@ class Perl6::Compiler is HLL::Compiler {
has $!readline;
has $!readline_add_history;
has $!completions;
has $!language_version;

method compilation-id() {
my class IDHolder { }
Expand All @@ -53,7 +54,20 @@ class Perl6::Compiler is HLL::Compiler {

method implementation() { self.config<implementation> }
method language_name() { 'Perl' }
method language_version() { self.config<language_version> }
method reset_language_version() {
$!language_version := NQPMu;
}
method set_language_version($version) {
$!language_version := $version;
}
method language_version() {
if nqp::defined($!language_version) {
$!language_version
}
else {
$!language_version := self.config<language_version>
}
}

method command_eval(*@args, *%options) {
if nqp::existskey(%options, 'doc') && !%options<doc> {
Expand Down
16 changes: 12 additions & 4 deletions src/Perl6/Grammar.nqp
Expand Up @@ -1135,7 +1135,10 @@ grammar Perl6::Grammar is HLL::Grammar does STD {
# for runaway detection
:my $*LASTQUOTE := [0,0];

{ $*W.loading_and_symbol_setup($/) }
{
nqp::getcomp('perl6').reset_language_version();
$*W.loading_and_symbol_setup($/)
}

<.finishpad>
<.bom>?
Expand Down Expand Up @@ -1506,10 +1509,15 @@ grammar Perl6::Grammar is HLL::Grammar does STD {
|| <?{ $<version><vnum>[0] == 6 }> {
my $version_parts := $<version><vnum>;
my $vwant := $<version>.ast.compile_time_value;
my $vhave := $*W.find_symbol(['Version']).new(
nqp::getcomp('perl6').language_version());
my $comp := nqp::getcomp('perl6');
my $vhave := $*W.find_symbol(['Version']).new($comp.language_version());
my $vcould := $*W.find_symbol(['Version']).new('6.d.PREVIEW');
my $sm := $*W.find_symbol(['&infix:<~~>']);
if !$sm($vhave,$vwant) {
if $sm($vcould, $vwant) && $vwant.parts.AT-POS($vwant.parts.elems - 1) eq 'PREVIEW' {
$comp.set_language_version('6.d');
$*W.load_setting($/, 'CORE.d');
}
elsif !$sm($vhave,$vwant) {
$/.CURSOR.typed_panic: 'X::Language::Unsupported', version => ~$<version>;
}
$*MAIN := 'MAIN';
Expand Down
5 changes: 5 additions & 0 deletions src/Perl6/ModuleLoader.nqp
Expand Up @@ -57,6 +57,11 @@ class Perl6::ModuleLoader does Perl6::ModuleLoaderVMConfig {
$file := nqp::stat("blib/$file", 0)
?? "blib/$file"
!! nqp::backendconfig<prefix> ~ '/share/nqp/lib/' ~ $file;

if nqp::existskey(%modules_loaded, $file) {
return nqp::ctxlexpad(%modules_loaded{$file});
}

nqp::loadbytecode($file);
%modules_loaded{$file} := my $module_ctx := $*MAIN_CTX;
nqp::bindhllsym('perl6', 'GLOBAL', $preserve_global);
Expand Down
4 changes: 4 additions & 0 deletions src/core.d/core_prologue.pm
@@ -0,0 +1,4 @@
use MONKEY-TYPING;
use nqp;

# vim: ft=perl6 expandtab sw=4
14 changes: 12 additions & 2 deletions tools/build/Makefile-JVM.in
Expand Up @@ -36,6 +36,7 @@ PERL6_C_JAR = blib/Perl6/Compiler.jar
PERL6_M_JAR = blib/Perl6/Metamodel.jar
PERL6_B_JAR = blib/Perl6/BOOTSTRAP.jar
SETTING_JAR = CORE.setting.jar
SETTING_D_JAR = CORE.d.setting.jar

PERL6_LANG_JARS = $(PERL6_ML_JAR) $(PERL6_W_JAR) $(PERL6_G_JAR) $(PERL6_OPS_JAR) $(PERL6_A_JAR) \
$(PERL6_O_JAR) $(PERL6_P_JAR) $(PERL6_C_JAR) $(PERL6_M_JAR) $(PERL6_B_JAR)
Expand Down Expand Up @@ -219,13 +220,17 @@ J_CORE_SOURCES = \
src/core/Metamodel/Primitives.pm \
src/core/core_epilogue.pm \

J_CORE_D_SOURCES = \
src/core.d/core_prologue.pm

PERL6_DEBUG_JAR = perl6-debug.jar
J_DEBUG_RUNNER = perl6-debug-j@runner_suffix@

J_CLEANUPS = \
*.manifest \
blib/Perl6/*.jar \
$(SETTING_JAR) \
$(SETTING_D_JAR) \
$(PERL6_JAR) \
j-rakudo_test_run.tar.gz \
$(J_BUILD_DIR)/* \
Expand All @@ -240,7 +245,7 @@ J_CLEANUPS = \
J_HARNESS_WITH_FUDGE = $(PERL) t/harness --fudge --keep-exit-code --jvm
J_HARNESS = $(PERL) t/harness --jvm

j-all: $(PERL6_JAR) $(SETTING_JAR) $(J_RUNNER) eval-client.pl $(PERL6_DEBUG_JAR) $(J_DEBUG_RUNNER)
j-all: $(PERL6_JAR) $(SETTING_JAR) $(SETTING_D_JAR) $(J_RUNNER) eval-client.pl $(PERL6_DEBUG_JAR) $(J_DEBUG_RUNNER)

$(RUNTIME_JAR): $(RUNTIME_JAVAS)
$(PERL) -MExtUtils::Command -e mkpath bin
Expand Down Expand Up @@ -302,6 +307,11 @@ $(SETTING_JAR): $(PERL6_JAR) $(PERL6_B_JAR) $(J_CORE_SOURCES)
@echo "The following step can take a long time, please be patient."
$(J_RUN_PERL6) --setting=NULL --ll-exception --optimize=3 --target=jar --stagestats --output=$(SETTING_JAR) $(J_BUILD_DIR)/CORE.setting

$(SETTING_D_JAR): $(PERL6_JAR) $(PERL6_B_JAR) $(SETTING_JAR) $(J_CORE_SOURCES)
$(J_NQP) $(J_GEN_CAT) $(J_CORE_D_SOURCES) > $(J_BUILD_DIR)/CORE.d.setting
@echo "The following step can take a long time, please be patient."
$(J_RUN_PERL6) --ll-exception --optimize=3 --target=jar --stagestats --output=$(SETTING_D_JAR) $(J_BUILD_DIR)/CORE.d.setting

$(J_RUNNER): tools/build/create-jvm-runner.pl
$(PERL) tools/build/create-jvm-runner.pl dev . . $(NQP_PREFIX) $(NQP_JARS)

Expand Down Expand Up @@ -368,7 +378,7 @@ j-install: j-all tools/build/create-jvm-runner.pl tools/build/install-core-dist.
$(MKPATH) $(DESTDIR)$(PERL6_LANG_DIR)/lib/Perl6
$(MKPATH) $(DESTDIR)$(PERL6_LANG_DIR)/runtime
$(CP) $(PERL6_LANG_JARS) $(DESTDIR)$(PERL6_LANG_DIR)/lib/Perl6
$(CP) $(SETTING_JAR) $(DESTDIR)$(PERL6_LANG_DIR)/runtime
$(CP) $(SETTING_JAR) $(SETTING_D_JAR) $(DESTDIR)$(PERL6_LANG_DIR)/runtime
$(CP) $(PERL6_JAR) $(DESTDIR)$(PERL6_LANG_DIR)/runtime
$(CP) $(PERL6_DEBUG_JAR) $(DESTDIR)$(PERL6_LANG_DIR)/runtime
$(CP) $(RUNTIME_JAR) $(DESTDIR)$(PERL6_LANG_DIR)/runtime
Expand Down
13 changes: 11 additions & 2 deletions tools/build/Makefile-Moar.in
Expand Up @@ -29,6 +29,7 @@ PERL6_C_MOAR = blib/Perl6/Compiler.moarvm
PERL6_M_MOAR = blib/Perl6/Metamodel.moarvm
PERL6_B_MOAR = blib/Perl6/BOOTSTRAP.moarvm
SETTING_MOAR = CORE.setting.moarvm
SETTING_D_MOAR = CORE.d.setting.moarvm
R_SETTING_MOAR = RESTRICTED.setting.moarvm

M_PERL6_OPS_DIR = dynext
Expand All @@ -55,6 +56,8 @@ M_METAMODEL_SOURCES = $(COMMON_BOOTSTRAP_SOURCES)
# setting - basically anything that feels MOP-ish.
M_CORE_SOURCES = \
@moar_core_sources@
M_CORE_D_SOURCES = \
@moar_core_d_sources@

PERL6_DEBUG_MOAR = perl6-debug.moarvm
M_DEBUG_RUNNER = perl6-debug-m@runner_suffix@
Expand All @@ -65,6 +68,7 @@ M_CLEANUPS = \
*.manifest \
blib/Perl6/*.moarvm \
$(SETTING_MOAR) \
$(SETTING_D_MOAR) \
$(R_SETTING_MOAR) \
$(PERL6_MOAR) \
rakudo_test_run.tar.gz \
Expand All @@ -81,7 +85,7 @@ M_CLEANUPS = \
M_HARNESS_WITH_FUDGE = $(PERL) t/harness --fudge --moar --keep-exit-code
HARNESS = $(PERL) t/harness

m-all: $(PERL6_MOAR) $(SETTING_MOAR) $(R_SETTING_MOAR) $(M_RUNNER) $(PERL6_DEBUG_MOAR) $(M_DEBUG_RUNNER) @m_all@
m-all: $(PERL6_MOAR) $(SETTING_MOAR) $(SETTING_D_MOAR) $(R_SETTING_MOAR) $(M_RUNNER) $(PERL6_DEBUG_MOAR) $(M_DEBUG_RUNNER) @m_all@

$(M_PERL6_OPS_DLL): $(M_PERL6_OPS_SRC) $(M_PERL6_CONT_SRC) Makefile
$(M_CC) @moar::ccswitch@ @moar::ccshared@ $(M_CFLAGS) -I$(PREFIX)/include/libatomic_ops \
Expand Down Expand Up @@ -150,6 +154,11 @@ $(SETTING_MOAR): $(PERL6_MOAR) $(PERL6_B_MOAR) $(M_CORE_SOURCES)
@echo "The following step can take a long time, please be patient."
$(M_RUN_PERL6) --setting=NULL --ll-exception --optimize=3 --target=mbc --stagestats --output=$(SETTING_MOAR) $(M_BUILD_DIR)/m-CORE.setting

$(SETTING_D_MOAR): $(PERL6_MOAR) $(PERL6_B_MOAR) $(SETTING_MOAR) $(M_CORE_D_SOURCES)
$(M_NQP) $(M_GEN_CAT) -f tools/build/moar_core_d_sources > $(M_BUILD_DIR)/m-CORE.d.setting
@echo "The following step can take a long time, please be patient."
$(M_RUN_PERL6) --ll-exception --optimize=3 --target=mbc --stagestats --output=$(SETTING_D_MOAR) $(M_BUILD_DIR)/m-CORE.d.setting

$(R_SETTING_MOAR): $(PERL6_MOAR) $(SETTING_MOAR) $(R_SETTING_SRC)
$(M_RUN_PERL6) --target=mbc --ll-exception --output=$(R_SETTING_MOAR) $(R_SETTING_SRC)

Expand Down Expand Up @@ -227,7 +236,7 @@ m-install: m-all tools/build/create-moar-runner.pl tools/build/install-core-dist
$(CP) $(M_PERL6_LANG_OUTPUT) $(DESTDIR)$(M_LIBPATH)/Perl6
$(MKPATH) $(DESTDIR)$(PERL6_LANG_DIR)/lib
$(MKPATH) $(DESTDIR)$(PERL6_LANG_DIR)/runtime
$(CP) $(SETTING_MOAR) $(R_SETTING_MOAR) $(DESTDIR)$(PERL6_LANG_DIR)/runtime
$(CP) $(SETTING_MOAR) $(SETTING_D_MOAR) $(R_SETTING_MOAR) $(DESTDIR)$(PERL6_LANG_DIR)/runtime
$(CP) $(PERL6_MOAR) $(PERL6_DEBUG_MOAR) $(DESTDIR)$(PERL6_LANG_DIR)/runtime
$(MKPATH) $(DESTDIR)$(PERL6_LANG_DIR)/runtime/dynext
$(CP) $(M_PERL6_OPS_DLL) $(DESTDIR)$(PERL6_LANG_DIR)/runtime/dynext
Expand Down
1 change: 1 addition & 0 deletions tools/build/moar_core_d_sources
@@ -0,0 +1 @@
src/core.d/core_prologue.pm

0 comments on commit f6ea655

Please sign in to comment.