Skip to content

Commit ad5b106

Browse files
committed
Support --vmlibs on MoarVM.
1 parent 94b174b commit ad5b106

File tree

2 files changed

+26
-5
lines changed

2 files changed

+26
-5
lines changed

src/NQP/Compiler.nqp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ my @clo := $nqpcomp.commandline_options();
3636
$nqpcomp.addstage('classname', :after<start>);
3737
#?endif
3838
#?if moar
39+
@clo.push('vmlibs=s');
3940
@clo.push('bootstrap');
4041
#?endif
4142

src/NQP/World.nqp

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -489,18 +489,38 @@ class NQP::World is HLL::World {
489489

490490
# Adds libraries that NQP code depends on.
491491
method libs() {
492+
#?if parrot
492493
# Need to load the NQP dynops/dympmcs, plus any extras requested.
493494
my @loadlibs := ['nqp_group', 'nqp_ops', 'nqp_bigint_ops', 'trans_ops', 'io_ops'];
494495
if %*COMPILING<%?OPTIONS><vmlibs> {
495496
for nqp::split(',', %*COMPILING<%?OPTIONS><vmlibs>) {
496497
@loadlibs.push($_);
497498
}
498499
}
499-
QAST::VM.new(
500-
loadlibs => @loadlibs,
501-
jvm => QAST::Op.new( :op('null') ),
502-
moar => QAST::Op.new( :op('null') )
503-
);
500+
QAST::VM.new( :@loadlibs );
501+
#?endif
502+
#?if jvm
503+
QAST::Op.new( :op('null') )
504+
#?endif
505+
#?if moar
506+
my $libs := QAST::Stmts.new();
507+
if %*COMPILING<%?OPTIONS><vmlibs> {
508+
for nqp::split(',', %*COMPILING<%?OPTIONS><vmlibs>) {
509+
my @bits := nqp::split('=', $_);
510+
$libs.push(QAST::VM.new(
511+
:moarop('loadlib'),
512+
QAST::SVal.new( :value(@bits[0]) ),
513+
QAST::SVal.new( :value(@bits[0]) )
514+
));
515+
$libs.push(QAST::VM.new(
516+
:moarop('loadext'),
517+
QAST::SVal.new( :value(@bits[0]) ),
518+
QAST::SVal.new( :value(@bits[1]) )
519+
));
520+
}
521+
}
522+
$libs
523+
#?endif
504524
}
505525

506526
# Adds some initial tasks.

0 commit comments

Comments
 (0)