More constant folding: null, true, and false
A step towards doing constant folding for arrays and objects.
This commit is contained in:
1 parent
20ca21cb0d
commit
8a561120c4
2 files changed
+9
-4
No files matched your search
@@ -868,9 +868,6 @@ static block bind_bytecoded_builtins(block b) {
|
|||||||
{
|
{
|
||||||
struct bytecoded_builtin builtin_defs[] = {
|
struct bytecoded_builtin builtin_defs[] = {
|
||||||
{"empty", gen_op_simple(BACKTRACK)},
|
{"empty", gen_op_simple(BACKTRACK)},
|
||||||
{"false", gen_const(jv_false())},
|
|
||||||
{"true", gen_const(jv_true())},
|
|
||||||
{"null", gen_const(jv_null())},
|
|
||||||
{"not", gen_condbranch(gen_const(jv_false()),
|
{"not", gen_condbranch(gen_const(jv_false()),
|
||||||
gen_const(jv_true()))}
|
gen_const(jv_true()))}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -638,7 +638,15 @@ FORMAT {
|
|||||||
jv_free($2);
|
jv_free($2);
|
||||||
} |
|
} |
|
||||||
IDENT {
|
IDENT {
|
||||||
$$ = gen_location(@$, locations, gen_call(jv_string_value($1), gen_noop()));
|
const char *s = jv_string_value($1);
|
||||||
|
if (strcmp(s, "false") == 0)
|
||||||
|
$$ = gen_const(jv_false());
|
||||||
|
else if (strcmp(s, "true") == 0)
|
||||||
|
$$ = gen_const(jv_true());
|
||||||
|
else if (strcmp(s, "null") == 0)
|
||||||
|
$$ = gen_const(jv_null());
|
||||||
|
else
|
||||||
|
$$ = gen_location(@$, locations, gen_call(s, gen_noop()));
|
||||||
jv_free($1);
|
jv_free($1);
|
||||||
} |
|
} |
|
||||||
IDENT '(' Args ')' {
|
IDENT '(' Args ')' {
|
||||||
|
|||||||
Reference in new issue
Block a user