diff options
Diffstat (limited to 'src/lj_obj.c')
-rw-r--r-- | src/lj_obj.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/lj_obj.c b/src/lj_obj.c index 322b7bec..208e4955 100644 --- a/src/lj_obj.c +++ b/src/lj_obj.c | |||
@@ -20,7 +20,7 @@ LJ_DATADEF const char *const lj_obj_itypename[] = { /* ORDER LJ_T */ | |||
20 | }; | 20 | }; |
21 | 21 | ||
22 | /* Compare two objects without calling metamethods. */ | 22 | /* Compare two objects without calling metamethods. */ |
23 | int lj_obj_equal(cTValue *o1, cTValue *o2) | 23 | int LJ_FASTCALL lj_obj_equal(cTValue *o1, cTValue *o2) |
24 | { | 24 | { |
25 | if (itype(o1) == itype(o2)) { | 25 | if (itype(o1) == itype(o2)) { |
26 | if (tvispri(o1)) | 26 | if (tvispri(o1)) |
@@ -33,3 +33,18 @@ int lj_obj_equal(cTValue *o1, cTValue *o2) | |||
33 | return numberVnum(o1) == numberVnum(o2); | 33 | return numberVnum(o1) == numberVnum(o2); |
34 | } | 34 | } |
35 | 35 | ||
36 | /* Return pointer to object or its object data. */ | ||
37 | const void * LJ_FASTCALL lj_obj_ptr(cTValue *o) | ||
38 | { | ||
39 | if (tvisudata(o)) | ||
40 | return uddata(udataV(o)); | ||
41 | else if (tvislightud(o)) | ||
42 | return lightudV(o); | ||
43 | else if (LJ_HASFFI && tviscdata(o)) | ||
44 | return cdataptr(cdataV(o)); | ||
45 | else if (tvisgcv(o)) | ||
46 | return gcV(o); | ||
47 | else | ||
48 | return NULL; | ||
49 | } | ||
50 | |||