Example #1
0
// get global
A2_API inline void a2_getglobal(struct a2_state* state){
	struct a2_obj* k = a2_getcstack(state->env_p, a2_top(state)-1);
	check_key(k);
	struct a2_obj* v = a2_get_envglobal(state->env_p, k);
	if(v==NULL)
		obj_setX(k, A2_TNIL, point, NULL);
	else
		*k = *v;
}
Example #2
0
File: a2_vm.c Project: eagles125/A2
//get global varable
static inline void _vm_getglobal(struct a2_vm* vm_p){
	int bx = ir_gbx(curr_ir);
	struct a2_obj* _dobj = callinfo_sfreg(curr_ci, ir_ga(curr_ir));
	struct a2_obj* _k = _getvalue(vm_p, bx);
	struct a2_obj* _obj = a2_get_envglobal(vm_p->env_p, _k);

	if(_obj==NULL){
		char _buf[64] = {0};
		a2_error(vm_p->env_p, e_vm_error, 
			"[vm error@%zd]: the global \'%s\' is not find.\n", 
			curr_line, 
			obj2str(_k, _buf, sizeof(_buf)));
	}
	*_dobj = *_obj;
	curr_pc++;
}