FFI: Add IR_CNEW/IR_CNEWI to allocate/init cdata objects.

This commit is contained in:
Mike Pall
2010-12-11 19:32:12 +01:00
parent 6947493687
commit cdac0fa2cb
5 changed files with 143 additions and 10 deletions

View File

@@ -107,9 +107,11 @@
_(XSTORE, S , ref, ref) \
\
/* Allocations. */ \
_(SNEW, N , ref, ref) /* CSE is ok, so not marked as A. */ \
_(SNEW, N , ref, ref) /* CSE is ok, not marked as A. */ \
_(TNEW, AW, lit, lit) \
_(TDUP, AW, ref, ___) \
_(CNEW, AW, ref, ref) \
_(CNEWI, NW, ref, ref) /* CSE is ok, not marked as A. */ \
\
/* Write barriers. */ \
_(TBAR, S , ref, ___) \
@@ -186,7 +188,9 @@ IRFPMDEF(FPMENUM)
_(UDATA_UDTYPE, offsetof(GCudata, udtype)) \
_(UDATA_FILE, sizeof(GCudata)) \
_(CDATA_TYPEID, offsetof(GCcdata, typeid)) \
_(CDATA_DATA, sizeof(GCcdata))
_(CDATA_INIT1, sizeof(GCcdata)) \
_(CDATA_INIT2_4, sizeof(GCcdata)+4) \
_(CDATA_INIT2_8, sizeof(GCcdata)+8)
typedef enum {
#define FLENUM(name, ofs) IRFL_##name,
@@ -256,6 +260,7 @@ typedef struct CCallInfo {
_(lj_tab_len, 1, FL, INT, 0) \
_(lj_gc_step_jit, 2, FS, NIL, CCI_L) \
_(lj_gc_barrieruv, 2, FS, NIL, 0) \
_(lj_mem_newgco, 2, FS, P32, CCI_L) \
_(lj_math_random_step, 1, FS, NUM, CCI_CASTU64|CCI_NOFPRCLOBBER) \
_(sinh, 1, N, NUM, 0) \
_(cosh, 1, N, NUM, 0) \
@@ -297,6 +302,7 @@ typedef enum {
#define IRM_W 0x80
#define IRM_NW (IRM_N|IRM_W)
#define IRM_AW (IRM_A|IRM_W)
#define IRM_LW (IRM_L|IRM_W)