ANN void emit_ext_ctor(const Emitter emit, const VM_Code code) { GWDEBUG_EXE
emit_add_instr(emit, RegDup);
- const Instr push_f = emit_add_instr(emit, RegPushImm0);
+ const Instr push_f = emit_add_instr(emit, RegPushImm);
push_f->m_val = (m_uint)code;
- const Instr offset = emit_add_instr(emit, RegPushImm0);
+ const Instr offset = emit_add_instr(emit, RegPushImm);
offset->m_val = emit_code_offset(emit);
emit_add_instr(emit, FuncMember);
}
ANN static m_bool emit_symbol_builtin(const Emitter emit, const Exp_Primary* prim) { GWDEBUG_EXE
const Value v = prim->value;
if(GET_FLAG(v, func)) {
- const Instr instr = emit_add_instr(emit, RegPushImm0);
+ const Instr instr = emit_add_instr(emit, RegPushImm);
instr->m_val = (m_uint)v->d.func_ref;
return GW_OK;
}
const m_uint size = v->type->size;
const Instr instr = emit_kind(emit, size, prim->self->emit_var, regpushimm);
if(size == SZ_INT) {
- instr->execute = RegPushImm0;
+ instr->execute = RegPushImm;
instr->m_val = (m_uint)v->d.ptr;
} else if(v->d.ptr)
memcpy(instr->ptr, v->d.ptr, v->type->size);
}
ANN static m_bool prim_num(const Emitter emit, const Exp_Primary * primary) {
- const Instr instr = emit_add_instr(emit, RegPushImm0);
+ const Instr instr = emit_add_instr(emit, RegPushImm);
instr->m_val = primary->d.num;
return GW_OK;
}
ANN static m_bool prim_char(const Emitter emit, const Exp_Primary* prim) {
const m_int c = str2char(prim->d.chr, prim->self->pos);
CHECK_BB(c);
- const Instr instr = emit_add_instr(emit, RegPushImm0);
+ const Instr instr = emit_add_instr(emit, RegPushImm);
instr->m_val = (m_uint)c;
return GW_OK;
}
}
ANN static m_bool emit_dot_static_data(const Emitter emit, const Value v, const uint emit_var) { GWDEBUG_EXE
- const Instr push = emit_add_instr(emit, RegPushImm0);
+ const Instr push = emit_add_instr(emit, RegPushImm);
push->m_val = (m_uint)v->owner_class;
const m_uint size = v->type->size;
const Instr instr = emit_kind(emit, size, emit_var, dotstatic);
static inline m_bool push_func_code(const Emitter emit, const Func f) {
const Instr back = (Instr)vector_back(&emit->code->instr);
if(back->execute == RegPushBase) {
- back->execute = RegPushImm0;
+ back->execute = RegPushImm;
back->m_val = (m_uint)f->code;
return GW_OK;
}
CHECK_BB(emit_exp_call1_code(emit, func))
else
push_func_code(emit, func);
- const Instr offset = emit_add_instr(emit, RegPushImm0);
+ const Instr offset = emit_add_instr(emit, RegPushImm);
offset->m_val = emit_code_offset(emit);
const Instr instr = emit_call(emit, func);
const m_uint size = instr->m_val = func->def->ret_type->size;
SET_FLAG(emit->code, member);
const Instr op = emit_add_instr(emit, MemPushImm);
op->m_val = emit->code->stack_depth;
- emit_add_instr(emit, RegPushImm0); // should push func
+ emit_add_instr(emit, RegPushImm); // should push func
CHECK_BB(emit_exp_call1(emit, exp->m_func))
const VM_Code code = finalyze(emit);
const m_uint size = exp->m_func->def->stack_depth - (GET_FLAG(exp->m_func,
}
ANN static m_bool spork_code(const Emitter emit, const Stmt stmt) { GWDEBUG_EXE
- emit_add_instr(emit, RegPushImm0);
+ emit_add_instr(emit, RegPushImm);
push_spork_code(emit, SPORK_CODE_PREFIX, stmt->pos);
if(SAFE_FLAG(emit->env->func, member))
stack_alloc_this(emit);
ANN static m_bool emit_dot_static_import_data(const Emitter emit, const Value v, const uint emit_addr) { GWDEBUG_EXE
if(v->d.ptr && GET_FLAG(v, builtin)) { // from C
if(GET_FLAG(v, enum)) {
- const Instr func_i = emit_add_instr(emit, RegPushImm0);
+ const Instr func_i = emit_add_instr(emit, RegPushImm);
func_i->m_val = (m_uint)v->d.ptr;
} else {
const m_uint size = v->type->size;
(m_uint)&v->d.ptr : (m_uint)v->d.ptr);
}
} else { // from code
- const Instr push_i = emit_add_instr(emit, RegPushImm0);
+ const Instr push_i = emit_add_instr(emit, RegPushImm);
push_i->m_val = (m_uint)v->owner_class;
const m_uint size = v->type->size;
const Instr instr = emit_kind(emit, size, emit_addr, dotstatic);
}
ANN static inline void emit_vec_func(const Emitter emit, const Value v) {
- const Instr instr = emit_add_instr(emit, RegPushImm0);
+ const Instr instr = emit_add_instr(emit, RegPushImm);
instr->m_val = (m_uint)((Func)vector_at(&v->owner_class->nspc->vtable, v->d.func_ref->vt_index))->code;
}
}
ANN static m_bool emit_dot_static_func(const Emitter emit, const Func func) { GWDEBUG_EXE
- const Instr func_i = emit_add_instr(emit, RegPushImm0);
+ const Instr func_i = emit_add_instr(emit, RegPushImm);
func_i->m_val = (m_uint)func;
return GW_OK;
}
const m_uint size = func_def->ret_type->size;
if(size) {
if(size == SZ_INT)
- emit_add_instr(emit, RegPushImm0);
+ emit_add_instr(emit, RegPushImm);
else
emit_kind(emit, size, 0, regpushimm);
}