Make builtin binding fast again by binding only referenced symbols
Avoid doing the internal binding of top-level symbols in the parser, leaving that work to be done in a post-processing step. For builtins, this lets us do a reference-aware bind step (block_bind_incremental) *after* generating builtins/0. Libraries are a bit trickier since they may be bound multiple times, so instead of thinking through the implications I added (block_bind_self) to resolve all internal symbols immediately.
This commit is contained in:
1 parent
b2b0bd37a1
commit
e843a4fdf9
6 files changed
+54
-9
No files matched your search
@@ -336,6 +336,7 @@ static int load_library(jq_state *jq, jv lib_path, int is_data, int raw, const c
|
||||
jv_string(dirname(lib_origin)),
|
||||
&program, lib_state);
|
||||
free(lib_origin);
|
||||
program = block_bind_self(program, OP_IS_CALL_PSEUDO);
|
||||
}
|
||||
}
|
||||
state_idx = lib_state->ct++;
|
||||
|
||||
Reference in new issue
Block a user