Skip to content

Commit

Permalink
[js] Make hll.slurpyArray take and array as second argument instead o…
Browse files Browse the repository at this point in the history
…f having a weird hll.slurpyArray3 variant.
  • Loading branch information
pmurias committed Nov 27, 2016
1 parent 3126d69 commit 38c8d8e
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 22 deletions.
6 changes: 3 additions & 3 deletions src/vm/js/nqp-runtime/bignum.js
Original file line number Diff line number Diff line change
Expand Up @@ -224,12 +224,12 @@ op.bool_I = function(n) {
op.radix_I = function(hllName, radix, str, zpos, flags, type) {
var extracted = core.radixHelper(radix, str, zpos, flags);
if (extracted == null) {
return hll.slurpyArray3(hllName, makeBI(type, bignum(0)), makeBI(type, bignum(1)), -1);
return hll.slurpyArray(hllName, [makeBI(type, bignum(0)), makeBI(type, bignum(1)), -1]);
}

if (radix == 10 || radix == 16) {
var pow = bignum(radix).pow(extracted.power);
return hll.slurpyArray3(hllName, makeBI(type, bignum(extracted.number, radix)), makeBI(type, pow), extracted.offset);
return hll.slurpyArray(hllName, [makeBI(type, bignum(extracted.number, radix)), makeBI(type, pow), extracted.offset]);
} else {
var n = extracted.number;
var base = bignum(1);
Expand All @@ -249,6 +249,6 @@ op.radix_I = function(hllName, radix, str, zpos, flags, type) {

if (n[0] == '-') result = result.neg();

return hll.slurpyArray3(hllName, makeBI(type, result), makeBI(type, base), extracted.offset);
return hll.slurpyArray(hllName, [makeBI(type, result), makeBI(type, base), extracted.offset]);
}
};
13 changes: 3 additions & 10 deletions src/vm/js/nqp-runtime/core.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,10 @@ exports.radixHelper = radixHelper;
op.radix = function(hllName, radix, str, zpos, flags) {
var extracted = radixHelper(radix, str, zpos, flags);
if (extracted == null) {
return hll.slurpyArray3(hllName, 0, 1, -1);
return hll.slurpyArray(hllName, [0, 1, -1]);
}
var pow = Math.pow(radix, extracted.power);
return hll.slurpyArray3(hllName, parseInt(extracted.number, radix), pow, extracted.offset);
return hll.slurpyArray(hllName, [parseInt(extracted.number, radix), pow, extracted.offset]);
};

op.setdebugtypename = function(type, debugName) {
Expand Down Expand Up @@ -1085,12 +1085,5 @@ op.islist = function(list) {
};

op.split = function(hllName, separator, string) {
var array = hll.slurpyArray(hllName);
if (string !== '') {
var parts = string.split(separator);
for (var i = 0; i < parts.length; i++) {
array.$$push(parts[i]);
}
}
return array;
return hll.slurpyArray(hllName, string !== '' ? string.split(separator) : []);
};
11 changes: 2 additions & 9 deletions src/vm/js/nqp-runtime/hll.js
Original file line number Diff line number Diff line change
Expand Up @@ -115,15 +115,8 @@ op.settypehllrole = function(type, role) {
return type;
};

exports.slurpyArray = function(hllName) {
exports.slurpyArray = function(hllName, array) {
var slurpyArray = hllConfigs[hllName].get('slurpy_array');
return slurpyArray._STable.REPR.allocate(slurpyArray._STable);
return slurpyArray._STable.REPR.allocateFromArray(slurpyArray._STable, array);
};

exports.slurpyArray3 = function(hllName, a, b, c) {
var array = exports.slurpyArray(hllName);
array.$$push(a);
array.$$push(b);
array.$$push(c);
return array;
};
6 changes: 6 additions & 0 deletions src/vm/js/nqp-runtime/reprs.js
Original file line number Diff line number Diff line change
Expand Up @@ -746,6 +746,12 @@ class VMArray extends REPR {
return obj;
}

allocateFromArray(STable, array) {
var obj = new STable.objConstructor();
obj.array = array;
return obj;
}

setupSTable(STable) {
STable.addInternalMethod('$$push', function(value) {
this.array.push(value);
Expand Down

0 comments on commit 38c8d8e

Please sign in to comment.