Skip to content

Commit

Permalink
[js] Implement nqp::hllbool and nqp::hllboolfor
Browse files Browse the repository at this point in the history
  • Loading branch information
pmurias committed Aug 17, 2018
1 parent 7517ed0 commit f1ce002
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/vm/js/Operations.nqp
Expand Up @@ -1032,6 +1032,9 @@ class QAST::OperationsJS {
add_simple_op('bindhllsym', $T_OBJ, [$T_STR, $T_STR, $T_OBJ], :side_effects);
add_simple_op('gethllsym', $T_OBJ, [$T_STR, $T_STR]);

add_simple_op('hllbool', $T_OBJ, [$T_INT], :takes_hll);
add_simple_op('hllboolfor', $T_OBJ, [$T_INT, $T_STR]);

add_simple_op('hllizefor', $T_OBJ, [$T_OBJ, $T_STR], :ctx, :side_effects, :await);

add_simple_op('hllize', $T_OBJ, [$T_OBJ], :ctx, :side_effects, sub ($ctx, $obj) {
Expand Down
11 changes: 11 additions & 0 deletions src/vm/js/nqp-runtime/hll.js
Expand Up @@ -91,6 +91,8 @@ function getHLL(language) {
hllConfigs[language] = new Map;
hllConfigs[language].set('slurpy_array', BOOT.Array);
hllConfigs[language].set('list', BOOT.Array);
hllConfigs[language].set('true_value', Null);
hllConfigs[language].set('false_value', Null);

// For serialization purposes
hllConfigs[language].set('name', language);
Expand Down Expand Up @@ -130,3 +132,12 @@ exports.list = function(currentHLL, array) {
const list = currentHLL.get('list');
return list._STable.REPR.allocateFromArray(list._STable, array);
};

op.hllbool = function(currentHLL, value) {
return value ? currentHLL.get('true_value') : currentHLL.get('false_value');
};

op.hllboolfor = function(value, hllName) {
const hll = getHLL(hllName);
return value ? hll.get('true_value') : hll.get('false_value');
};

0 comments on commit f1ce002

Please sign in to comment.