Skip to content

Commit cad6b7d

Browse files
committed
[js] Implement nqp::execname
1 parent 81b1f29 commit cad6b7d

File tree

4 files changed

+18
-1
lines changed

4 files changed

+18
-1
lines changed

src/HLL/Compiler.nqp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class HLL::Compiler does HLL::Backend::Default {
2525
# Command options and usage.
2626
@!cmdoptions := nqp::split(' ', 'e=s help|h target=s trace|t=s encoding=s output|o=s source-name=s combine version|v show-config verbose-config|V stagestats=s? ll-exception rxtrace nqpevent=s profile=s? profile-compile=s? profile-filename=s profile-stage=s'
2727
#?if js
28-
~ ' substagestats beautify nqp-runtime=s perl6-runtime=s libpath=s shebang'
28+
~ ' substagestats beautify nqp-runtime=s perl6-runtime=s libpath=s shebang execname=s'
2929
#?endif
3030
);
3131
%!config := nqp::hash();
@@ -268,6 +268,11 @@ class HLL::Compiler does HLL::Backend::Default {
268268
nqp::getcomp('JavaScript').eval('(function(paths) {nqp.libpath(paths.array)})')($*LIBPATH);
269269
}
270270

271+
my $*EXECNAME;
272+
if %adverbs<execname> {
273+
$*EXECNAME := %adverbs<execname>;
274+
}
275+
271276
self.command_eval(|@a, |%adverbs);
272277
}
273278

src/vm/js/Compiler.nqp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1978,6 +1978,7 @@ class QAST::CompilerJS does DWIMYNameMangling does SerializeOnce {
19781978
"'use strict'\n",
19791979
"var nqp = require({quote_string($nqp-runtime || 'nqp-runtime')});\n",
19801980
$libpath,
1981+
(try $*EXECNAME) ?? "nqp.execname({quote_string($*EXECNAME)});\n" !! '',
19811982
self.declare_wvals,
19821983
$deserializes ?? '' !! self.setup_wvals,
19831984
self.setup_cuids,

src/vm/js/Operations.nqp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1670,5 +1670,7 @@ class QAST::OperationsJS {
16701670

16711671
add_simple_op('loadbytecode', $T_STR, [$T_STR], :ctx, :side_effects);
16721672
add_simple_op('loadbytecodefh', $T_VOID, [$T_OBJ, $T_STR], :ctx, :side_effects);
1673+
1674+
add_simple_op('execname', $T_STR, []);
16731675
}
16741676

src/vm/js/nqp-runtime/runtime.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,15 @@ exports.paramcheckfailed = function(hllName, ctx, args) {
476476
return hll.hllConfigs[hllName].get('bind_error').$$call(ctx, null, capture);
477477
};
478478

479+
let execname;
480+
exports.execname = function(path) {
481+
execname = path;
482+
};
483+
484+
op.execname = function() {
485+
return execname;
486+
};
487+
479488
exports.NativeRef = require('./reprs.js').NativeRef;
480489

481490
exports.getHLL = hll.getHLL;

0 commit comments

Comments
 (0)