2 ** Miscellaneous object handling.
3 ** Copyright (C) 2005-2023 Mike Pall. See Copyright Notice in luajit.h
11 /* Object type names. */
12 LJ_DATADEF
const char *const lj_obj_typename
[] = { /* ORDER LUA_T */
13 "no value", "nil", "boolean", "userdata", "number", "string",
14 "table", "function", "userdata", "thread", "proto", "cdata"
17 LJ_DATADEF
const char *const lj_obj_itypename
[] = { /* ORDER LJ_T */
18 "nil", "boolean", "boolean", "userdata", "string", "upval", "thread",
19 "proto", "function", "trace", "cdata", "table", "userdata", "number"
22 /* Compare two objects without calling metamethods. */
23 int LJ_FASTCALL
lj_obj_equal(cTValue
*o1
, cTValue
*o2
)
25 if (itype(o1
) == itype(o2
)) {
29 return gcrefeq(o1
->gcr
, o2
->gcr
);
30 } else if (!tvisnumber(o1
) || !tvisnumber(o2
)) {
33 return numberVnum(o1
) == numberVnum(o2
);
36 /* Return pointer to object or its object data. */
37 const void * LJ_FASTCALL
lj_obj_ptr(global_State
*g
, cTValue
*o
)
41 return uddata(udataV(o
));
42 else if (tvislightud(o
))
43 return lightudV(g
, o
);
44 else if (LJ_HASFFI
&& tviscdata(o
))
45 return cdataptr(cdataV(o
));