From 55b16959717084884fd4a0cbae6d19e3786c20c7 Mon Sep 17 00:00:00 2001 From: Mike Pall <mike> Date: Tue, 8 Dec 2009 19:46:35 +0100 Subject: RELEASE LuaJIT-2.0.0-beta1 --- src/lj_obj.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/lj_obj.c (limited to 'src/lj_obj.c') diff --git a/src/lj_obj.c b/src/lj_obj.c new file mode 100644 index 00000000..d26a6b38 --- /dev/null +++ b/src/lj_obj.c @@ -0,0 +1,41 @@ +/* +** Miscellaneous object handling. +** Copyright (C) 2005-2009 Mike Pall. See Copyright Notice in luajit.h +*/ + +#define lj_obj_c +#define LUA_CORE + +#include "lj_obj.h" + +/* Object type names. */ +LJ_DATADEF const char *const lj_obj_typename[] = { /* ORDER LUA_T */ + "no value", "nil", "boolean", "userdata", "number", "string", + "table", "function", "userdata", "thread", "proto", "upval" +}; + +LJ_DATADEF const char *const lj_obj_itypename[] = { /* ORDER LJ_T */ + "nil", "boolean", "boolean", "userdata", "string", "upval", "thread", + "proto", "function", "deadkey", "table", "userdata", "number" +}; + +/* Compare two objects without calling metamethods. */ +int lj_obj_equal(cTValue *o1, cTValue *o2) +{ + if (itype(o1) == itype(o2)) { + if (tvispri(o1)) + return 1; + if (!tvisnum(o1)) { +#if LJ_64 + if (tvislightud(o1)) + return o1->u64 == o2->u64; + else +#endif + return gcrefeq(o1->gcr, o2->gcr); + } + } else if (!tvisnum(o1) || !tvisnum(o2)) { + return 0; + } + return numV(o1) == numV(o2); +} + -- cgit v1.2.3-55-g6feb