refactor: rename wrenGetArgument* to wrenGetSlot* and add IS_LIST macro for slot-based API
Migrate the foreign method argument access API from an argument-oriented naming scheme to a slot-based one, renaming wrenGetArgumentCount to wrenGetSlotCount, wrenGetArgumentBool to wrenGetSlotBool, and all other argument accessors accordingly. Update every call site across the VM, modules (io, timer, meta, random), and test files (benchmark, foreign_class) to use the new names. The slot getters now assert the correct type at runtime rather than silently returning defaults, shifting safety responsibility to the caller for performance. Also add the IS_LIST type-checking macro to wren_value.h alongside the existing IS_* macros.
This commit is contained in:
@@ -18,7 +18,7 @@ void metaCompile(WrenVM* vm)
|
||||
: AS_CLOSURE(callingFn)->fn->module;
|
||||
|
||||
// Compile it.
|
||||
ObjFn* fn = wrenCompile(vm, module, wrenGetArgumentString(vm, 1), false);
|
||||
ObjFn* fn = wrenCompile(vm, module, wrenGetSlotString(vm, 1), false);
|
||||
if (fn == NULL) return;
|
||||
|
||||
// Return the result. We can't use the public API for this since we have a
|
||||
|
||||
@@ -45,7 +45,7 @@ static void randomAllocate(WrenVM* vm)
|
||||
|
||||
static void randomSeed0(WrenVM* vm)
|
||||
{
|
||||
Well512* well = (Well512*)wrenGetArgumentForeign(vm, 0);
|
||||
Well512* well = (Well512*)wrenGetSlotForeign(vm, 0);
|
||||
|
||||
srand((uint32_t)time(NULL));
|
||||
for (int i = 0; i < 16; i++)
|
||||
@@ -56,9 +56,9 @@ static void randomSeed0(WrenVM* vm)
|
||||
|
||||
static void randomSeed1(WrenVM* vm)
|
||||
{
|
||||
Well512* well = (Well512*)wrenGetArgumentForeign(vm, 0);
|
||||
Well512* well = (Well512*)wrenGetSlotForeign(vm, 0);
|
||||
|
||||
srand((uint32_t)wrenGetArgumentDouble(vm, 1));
|
||||
srand((uint32_t)wrenGetSlotDouble(vm, 1));
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
well->state[i] = rand();
|
||||
@@ -67,17 +67,17 @@ static void randomSeed1(WrenVM* vm)
|
||||
|
||||
static void randomSeed16(WrenVM* vm)
|
||||
{
|
||||
Well512* well = (Well512*)wrenGetArgumentForeign(vm, 0);
|
||||
Well512* well = (Well512*)wrenGetSlotForeign(vm, 0);
|
||||
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
well->state[i] = (uint32_t)wrenGetArgumentDouble(vm, i + 1);
|
||||
well->state[i] = (uint32_t)wrenGetSlotDouble(vm, i + 1);
|
||||
}
|
||||
}
|
||||
|
||||
static void randomFloat(WrenVM* vm)
|
||||
{
|
||||
Well512* well = (Well512*)wrenGetArgumentForeign(vm, 0);
|
||||
Well512* well = (Well512*)wrenGetSlotForeign(vm, 0);
|
||||
|
||||
// A double has 53 bits of precision in its mantissa, and we'd like to take
|
||||
// full advantage of that, so we need 53 bits of random source data.
|
||||
@@ -97,7 +97,7 @@ static void randomFloat(WrenVM* vm)
|
||||
|
||||
static void randomInt0(WrenVM* vm)
|
||||
{
|
||||
Well512* well = (Well512*)wrenGetArgumentForeign(vm, 0);
|
||||
Well512* well = (Well512*)wrenGetSlotForeign(vm, 0);
|
||||
|
||||
wrenReturnDouble(vm, (double)advanceState(well));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user