4 data_root<object> owner;
5 growable_byte_array code;
6 growable_byte_array relocation;
7 growable_array parameters;
8 growable_array literals;
9 bool computing_offset_p;
14 jit(cell owner, factor_vm* parent);
17 void compute_position(cell offset);
19 void emit_relocation(cell relocation_template);
20 void emit(cell code_template);
23 void parameter(cell parameter) { parameters.add(parameter); }
25 void emit_with_parameter(cell code_template_, cell parameter_);
28 void literal(cell literal) { literals.add(literal); }
30 void emit_with_literal(cell code_template_, cell literal_);
33 void push(cell literal) {
34 emit_with_literal(parent->special_objects[JIT_PUSH_LITERAL], literal);
37 bool emit_subprimitive(cell word_, bool tail_call_p, bool stack_frame_p);
39 fixnum get_position() {
40 if (computing_offset_p) {
41 // If this is still on, emit() didn't clear it,
42 // so the offset was out of bounds
48 void set_position(fixnum position_) {
49 if (computing_offset_p)
53 code_block* to_code_block(code_block_type type, cell frame_size);
57 void operator=(const jit&);