More work refactoring ckint/tryint/isint

This commit is contained in:
2024-03-15 12:50:08 -04:00
parent 26d0715deb
commit 3d6b5224f3
4 changed files with 64 additions and 51 deletions

View File

@@ -44,20 +44,19 @@ static bool equivalent_values(LuaCoreStack &MLS, LuaSlot mval, LuaSlot mtnmap,
switch (MLS.xtype(mval)) {
case LUA_TBOOLEAN: {
if (SLS.type(sval) != LUA_TBOOLEAN) return false;
return MLS.ckboolean(mval) == SLS.ckboolean(sval);
return MLS.tryboolean(mval) == SLS.tryboolean(sval);
}
case LUA_TNUMBER: {
if (SLS.type(sval) != LUA_TNUMBER) return false;
return MLS.cknumber(mval) == SLS.cknumber(sval);
return MLS.trynumber(mval) == SLS.trynumber(sval);
}
case LUA_TSTRING: {
// This could be faster if I used lua_tolstring directly.
if (SLS.type(sval) != LUA_TSTRING) return false;
return MLS.ckstring(mval) == SLS.ckstring(sval);
return MLS.trystring(mval) == SLS.trystring(sval);
}
case LUA_TLIGHTUSERDATA: {
if (SLS.type(sval) != LUA_TLIGHTUSERDATA) return false;
return MLS.cktoken(mval) == SLS.cktoken(sval);
return MLS.trytoken(mval) == SLS.trytoken(sval);
}
case LUA_TFUNCTION: {
// Cannot really compare. Just return true if the types match.
@@ -95,22 +94,22 @@ static void transmit_value(LuaCoreStack &MLS, LuaSlot mval, LuaSlot mtnmap, Stre
switch (MLS.xtype(mval)) {
case LUA_TBOOLEAN: {
sb->write_uint8(LUA_TBOOLEAN);
sb->write_bool(MLS.ckboolean(mval));
sb->write_bool(*MLS.tryboolean(mval));
return;
}
case LUA_TNUMBER: {
sb->write_uint8(LUA_TNUMBER);
sb->write_double(MLS.cknumber(mval));
sb->write_double(*MLS.trynumber(mval));
return;
}
case LUA_TSTRING: {
sb->write_uint8(LUA_TSTRING);
sb->write_string(MLS.ckstring(mval));
sb->write_string(*MLS.trystring(mval));
return;
}
case LUA_TLIGHTUSERDATA: {
sb->write_uint8(LUA_TLIGHTUSERDATA);
sb->write_uint64(MLS.cktoken(mval).value);
sb->write_uint64((*MLS.trytoken(mval)).value);
return;
}
case LUA_TT_GENERAL: {