Skip to content

Commit d6a01df

Browse files
committed
[js] Make nqp::cleardispatcher behave like on the MoarVM
1 parent 567f656 commit d6a01df

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

src/vm/js/Operations.nqp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1691,7 +1691,7 @@ class QAST::OperationsJS {
16911691
~ "\}\n"
16921692
);
16931693
});
1694-
add_simple_op('cleardispatcher', $T_VOID, [], sub () {"nqp.currentDispatcher = undefined"}, :side_effects);
1694+
add_simple_op('cleardispatcher', $T_VOID, [], :ctx, :side_effects);
16951695
add_simple_op('setdispatcher', $T_VOID, [$T_OBJ], sub ($value) {"nqp.currentDispatcher = $value"}, :side_effects);
16961696
add_simple_op('setdispatcherfor', $T_VOID, [$T_OBJ, $T_OBJ], :side_effects);
16971697

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1587,6 +1587,12 @@ op.unicmp_s = function(a, b, collationMode, language, code) {
15871587
return (result < 0 ? -1 : (result > 0 ? 1 : 0));
15881588
};
15891589

1590+
op.cleardispatcher = function(ctx) {
1591+
if (nqp.currentDispatcherFor === ctx.codeRef() || nqp.currentDispatcherFor === undefined) {
1592+
nqp.currentDispatcher = undefined
1593+
}
1594+
};
1595+
15901596
const getrusage = require('qrusage');
15911597
op.getrusage = function() {
15921598
const usage = getrusage();

0 commit comments

Comments
 (0)