3 struct quotation_jit : public jit {
4 data_root<array> elements;
5 bool compiling, relocate;
7 quotation_jit(cell owner, bool compiling, bool relocate, factor_vm* vm)
8 : jit(code_block_unoptimized, owner, vm),
9 elements(false_object, vm),
14 void init_quotation(cell quot);
15 void emit_mega_cache_lookup(cell methods, fixnum index, cell cache);
16 bool primitive_call_p(cell i, cell length);
17 bool trivial_quotation_p(array* elements);
18 void emit_quotation(cell quot);
19 void emit_prolog(bool safepoint, bool stack_frame);
20 void emit_epilog(bool safepoint, bool stack_frame);
21 bool fast_if_p(cell i, cell length);
22 bool fast_dip_p(cell i, cell length);
23 bool fast_2dip_p(cell i, cell length);
24 bool fast_3dip_p(cell i, cell length);
25 bool mega_lookup_p(cell i, cell length);
26 bool declare_p(cell i, cell length);
27 bool special_subprimitive_p(cell obj);
28 bool word_stack_frame_p(cell obj);
29 cell word_stack_frame_size(cell obj);
30 bool word_safepoint_p(cell obj);
33 void iterate_quotation();
36 VM_C_API cell lazy_jit_compile(cell quot, factor_vm* parent);