]> gitweb.factorcode.org Git - factor.git/blob - vm/quotations.hpp
VM: fixing small style issues
[factor.git] / vm / quotations.hpp
1 namespace factor {
2
3 struct quotation_jit : public jit {
4   data_root<array> elements;
5   bool compiling, relocate;
6
7   /* Allocates memory */
8   quotation_jit(cell owner, bool compiling, bool relocate, factor_vm* vm)
9       : jit(code_block_unoptimized, owner, vm),
10         elements(false_object, vm),
11         compiling(compiling),
12         relocate(relocate) {}
13   ;
14
15   cell nth(cell index);
16   void init_quotation(cell quot);
17
18   bool primitive_call_p(cell i, cell length);
19   bool fast_if_p(cell i, cell length);
20   bool fast_dip_p(cell i, cell length);
21   bool fast_2dip_p(cell i, cell length);
22   bool fast_3dip_p(cell i, cell length);
23   bool mega_lookup_p(cell i, cell length);
24   bool declare_p(cell i, cell length);
25   bool special_subprimitive_p(cell obj);
26
27   void emit_mega_cache_lookup(cell methods, fixnum index, cell cache);
28   void emit_quotation(cell quot);
29   void emit_epilog(bool needed);
30
31   cell word_stack_frame_size(cell obj);
32   bool stack_frame_p();
33   void iterate_quotation();
34
35   /* Allocates memory */
36   void word_call(cell word) {
37     emit_with_literal(parent->special_objects[JIT_WORD_CALL], word);
38   }
39
40   /* Allocates memory (literal(), emit())*/
41   void word_jump(cell word_) {
42     data_root<word> word(word_, parent);
43 #ifndef FACTOR_AMD64
44     literal(tag_fixnum(xt_tail_pic_offset));
45 #endif
46     literal(word.value());
47     emit(parent->special_objects[JIT_WORD_JUMP]);
48   }
49 };
50
51 VM_C_API cell lazy_jit_compile(cell quot, factor_vm* parent);
52
53 }