4 struct quotation_jit : public jit {
5 gc_root<array> elements;
6 bool compiling, relocate;
8 explicit quotation_jit(cell quot, bool compiling_, bool relocate_, factor_vm *vm)
9 : jit(code_block_unoptimized,quot,vm),
10 elements(owner.as<quotation>().untagged()->array,vm),
11 compiling(compiling_),
12 relocate(relocate_){};
14 void emit_mega_cache_lookup(cell methods, fixnum index, cell cache);
15 bool primitive_call_p(cell i, cell length);
16 bool trivial_quotation_p(array *elements);
17 void emit_quot(cell quot);
18 bool fast_if_p(cell i, cell length);
19 bool fast_dip_p(cell i, cell length);
20 bool fast_2dip_p(cell i, cell length);
21 bool fast_3dip_p(cell i, cell length);
22 bool mega_lookup_p(cell i, cell length);
23 bool declare_p(cell i, cell length);
25 void iterate_quotation();
28 VM_ASM_API cell lazy_jit_compile_impl(cell quot, stack_frame *stack, factor_vm *parent);