&&sporkini, &&forkini, &&sporkfunc, &&sporkmemberfptr, &&sporkexp,
&&sporkend, &&brancheqint, &&branchneint, &&brancheqfloat,
&&branchnefloat, &&unroll, &&arrayappend, &&autounrollinit, &&autoloop,
- &&arraytop, &&arrayaccess, &&arrayget, &&arrayaddr, &&newobj, &&addref,
+ &&arraytop, &&arrayaccess, &&arrayget, &&arrayaddr, &&arraygetobj, &&newobj, &&addref,
&&addrefaddr, &&structaddref, &&structaddrefaddr, &&objassign, &&assign,
&&remref, &&except, &&allocmemberaddr, &&dotmember, &&dotfloat,
&&dotother, &&dotaddr, &&unioncheck, &&unionint, &&unionfloat,
m_vector_addr(ARRAY(a.obj), *(m_int *)(reg + VAL));
PRAGMA_POP()
DISPATCH()
+ arraygetobj:
+ PRAGMA_PUSH()
+ m_vector_get(ARRAY(a.obj), *(m_int *)(reg + VAL), (reg + IVAL2));
+ if(!*(M_Object*)(reg + IVAL2)) {
+ handle(shred, "EmptyArrayAccess");
+ continue;
+ }
+ PRAGMA_POP()
+ DISPATCH()
newobj:
*(M_Object *)reg = new_object(vm->gwion->mp, NULL, (Type)VAL2);
reg += SZ_INT;
DISPATCH()
objassign : {
const M_Object o = **(M_Object **)(reg - SZ_INT);
-// release(o, shred);
+ release(o, shred);
}
assign:
reg -= SZ_INT;