Skip to content

Commit

Permalink
[js] Implement nqp::p6box_n, nqp::p6box_i, nqp::p6box_s.
Browse files Browse the repository at this point in the history
  • Loading branch information
pmurias committed May 31, 2016
1 parent a80a5ae commit 4e47144
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 3 deletions.
4 changes: 4 additions & 0 deletions src/vm/js/Perl6/Ops.nqp
Expand Up @@ -42,6 +42,10 @@ $ops.add_simple_op('p6settypes', $ops.OBJ, [$ops.OBJ], :sideffects);
$ops.add_simple_op('p6init', $ops.OBJ, [], :sideffects, -> {'require("perl6-runtime")'});
$ops.add_simple_op('p6bool', $ops.OBJ, [$ops.BOOL], :sideffects);

$ops.add_simple_op('p6box_s', $ops.OBJ, [$ops.STR]);
$ops.add_simple_op('p6box_i', $ops.OBJ, [$ops.INT]);
$ops.add_simple_op('p6box_n', $ops.OBJ, [$ops.NUM]);

$ops.add_simple_op('p6typecheckrv', $ops.OBJ, [$ops.OBJ, $ops.OBJ, $ops.OBJ]);

$ops.add_simple_op('p6decontrv', $ops.OBJ, [$ops.OBJ, $ops.OBJ]);
28 changes: 25 additions & 3 deletions src/vm/js/perl6-runtime/runtime.js
@@ -1,14 +1,15 @@
var nqp = require('nqp-runtime');
var op = {};

var Scalar;
var True;
var False;
var Scalar, True, False, Int, Num, Str;

op.p6settypes = function(types) {
Scalar = types.content.get('Scalar');
True = types.content.get('True');
False = types.content.get('False');
Int = types.content.get('Int');
Num = types.content.get('Num');
Str = types.content.get('Str');
return types;
};

Expand All @@ -26,6 +27,27 @@ op.p6decontrv = function(rountine, cont) {
return cont;
};

op.p6box_i = function(int) {
var repr = Int._STable.REPR;
var boxed = repr.allocate(Int._STable);
boxed.$$setInt(int.value);
return boxed;
};

op.p6box_n = function(num) {
var repr = Num._STable.REPR;
var boxed = repr.allocate(Num._STable);
boxed.$$setNum(num);
return boxed;
};

op.p6box_s = function(str) {
var repr = Str._STable.REPR;
var boxed = repr.allocate(Str._STable);
boxed.$$setStr(str);
return boxed;
};

var containerSpecs = require('nqp-runtime/container-specs.js');

function RakudoScalar(STable) {
Expand Down

0 comments on commit 4e47144

Please sign in to comment.