mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-08-28 17:09:10 +00:00
(svn r23294) -Codechange: sq_pop in native callback is just a waste of CPU cycles, as the top is reset in all cases
This commit is contained in:
@@ -220,7 +220,6 @@ namespace SQConvert {
|
|||||||
Tretval ret = (*func)(
|
Tretval ret = (*func)(
|
||||||
GetParam(ForceType<Targ1>(), vm, 2, &ptr)
|
GetParam(ForceType<Targ1>(), vm, 2, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 1);
|
|
||||||
return Return(vm, ret);
|
return Return(vm, ret);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -236,7 +235,6 @@ namespace SQConvert {
|
|||||||
(*func)(
|
(*func)(
|
||||||
GetParam(ForceType<Targ1>(), vm, 2, &ptr)
|
GetParam(ForceType<Targ1>(), vm, 2, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 1);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -252,7 +250,6 @@ namespace SQConvert {
|
|||||||
Tretval ret = (instance->*func)(
|
Tretval ret = (instance->*func)(
|
||||||
GetParam(ForceType<Targ1>(), vm, 2, &ptr)
|
GetParam(ForceType<Targ1>(), vm, 2, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 1);
|
|
||||||
return Return(vm, ret);
|
return Return(vm, ret);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -268,7 +265,6 @@ namespace SQConvert {
|
|||||||
(instance->*func)(
|
(instance->*func)(
|
||||||
GetParam(ForceType<Targ1>(), vm, 2, &ptr)
|
GetParam(ForceType<Targ1>(), vm, 2, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 1);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -295,7 +291,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ1>(), vm, 2, &ptr),
|
GetParam(ForceType<Targ1>(), vm, 2, &ptr),
|
||||||
GetParam(ForceType<Targ2>(), vm, 3, &ptr)
|
GetParam(ForceType<Targ2>(), vm, 3, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 2);
|
|
||||||
return Return(vm, ret);
|
return Return(vm, ret);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -312,7 +307,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ1>(), vm, 2, &ptr),
|
GetParam(ForceType<Targ1>(), vm, 2, &ptr),
|
||||||
GetParam(ForceType<Targ2>(), vm, 3, &ptr)
|
GetParam(ForceType<Targ2>(), vm, 3, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 2);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -329,7 +323,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ1>(), vm, 2, &ptr),
|
GetParam(ForceType<Targ1>(), vm, 2, &ptr),
|
||||||
GetParam(ForceType<Targ2>(), vm, 3, &ptr)
|
GetParam(ForceType<Targ2>(), vm, 3, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 2);
|
|
||||||
return Return(vm, ret);
|
return Return(vm, ret);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -346,7 +339,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ1>(), vm, 2, &ptr),
|
GetParam(ForceType<Targ1>(), vm, 2, &ptr),
|
||||||
GetParam(ForceType<Targ2>(), vm, 3, &ptr)
|
GetParam(ForceType<Targ2>(), vm, 3, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 2);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -375,7 +367,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ2>(), vm, 3, &ptr),
|
GetParam(ForceType<Targ2>(), vm, 3, &ptr),
|
||||||
GetParam(ForceType<Targ3>(), vm, 4, &ptr)
|
GetParam(ForceType<Targ3>(), vm, 4, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 3);
|
|
||||||
return Return(vm, ret);
|
return Return(vm, ret);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -393,7 +384,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ2>(), vm, 3, &ptr),
|
GetParam(ForceType<Targ2>(), vm, 3, &ptr),
|
||||||
GetParam(ForceType<Targ3>(), vm, 4, &ptr)
|
GetParam(ForceType<Targ3>(), vm, 4, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 3);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -411,7 +401,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ2>(), vm, 3, &ptr),
|
GetParam(ForceType<Targ2>(), vm, 3, &ptr),
|
||||||
GetParam(ForceType<Targ3>(), vm, 4, &ptr)
|
GetParam(ForceType<Targ3>(), vm, 4, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 3);
|
|
||||||
return Return(vm, ret);
|
return Return(vm, ret);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -429,7 +418,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ2>(), vm, 3, &ptr),
|
GetParam(ForceType<Targ2>(), vm, 3, &ptr),
|
||||||
GetParam(ForceType<Targ3>(), vm, 4, &ptr)
|
GetParam(ForceType<Targ3>(), vm, 4, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 3);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -460,7 +448,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ3>(), vm, 4, &ptr),
|
GetParam(ForceType<Targ3>(), vm, 4, &ptr),
|
||||||
GetParam(ForceType<Targ4>(), vm, 5, &ptr)
|
GetParam(ForceType<Targ4>(), vm, 5, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 4);
|
|
||||||
return Return(vm, ret);
|
return Return(vm, ret);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -479,7 +466,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ3>(), vm, 4, &ptr),
|
GetParam(ForceType<Targ3>(), vm, 4, &ptr),
|
||||||
GetParam(ForceType<Targ4>(), vm, 5, &ptr)
|
GetParam(ForceType<Targ4>(), vm, 5, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 4);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -498,7 +484,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ3>(), vm, 4, &ptr),
|
GetParam(ForceType<Targ3>(), vm, 4, &ptr),
|
||||||
GetParam(ForceType<Targ4>(), vm, 5, &ptr)
|
GetParam(ForceType<Targ4>(), vm, 5, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 4);
|
|
||||||
return Return(vm, ret);
|
return Return(vm, ret);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -517,7 +502,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ3>(), vm, 4, &ptr),
|
GetParam(ForceType<Targ3>(), vm, 4, &ptr),
|
||||||
GetParam(ForceType<Targ4>(), vm, 5, &ptr)
|
GetParam(ForceType<Targ4>(), vm, 5, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 4);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -550,7 +534,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ4>(), vm, 5, &ptr),
|
GetParam(ForceType<Targ4>(), vm, 5, &ptr),
|
||||||
GetParam(ForceType<Targ5>(), vm, 6, &ptr)
|
GetParam(ForceType<Targ5>(), vm, 6, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 5);
|
|
||||||
return Return(vm, ret);
|
return Return(vm, ret);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -570,7 +553,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ4>(), vm, 5, &ptr),
|
GetParam(ForceType<Targ4>(), vm, 5, &ptr),
|
||||||
GetParam(ForceType<Targ5>(), vm, 6, &ptr)
|
GetParam(ForceType<Targ5>(), vm, 6, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 5);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -590,7 +572,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ4>(), vm, 5, &ptr),
|
GetParam(ForceType<Targ4>(), vm, 5, &ptr),
|
||||||
GetParam(ForceType<Targ5>(), vm, 6, &ptr)
|
GetParam(ForceType<Targ5>(), vm, 6, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 5);
|
|
||||||
return Return(vm, ret);
|
return Return(vm, ret);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -610,7 +591,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ4>(), vm, 5, &ptr),
|
GetParam(ForceType<Targ4>(), vm, 5, &ptr),
|
||||||
GetParam(ForceType<Targ5>(), vm, 6, &ptr)
|
GetParam(ForceType<Targ5>(), vm, 6, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 5);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -649,7 +629,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ9>(), vm, 10, &ptr),
|
GetParam(ForceType<Targ9>(), vm, 10, &ptr),
|
||||||
GetParam(ForceType<Targ10>(), vm, 11, &ptr)
|
GetParam(ForceType<Targ10>(), vm, 11, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 10);
|
|
||||||
return Return(vm, ret);
|
return Return(vm, ret);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -674,7 +653,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ9>(), vm, 10, &ptr),
|
GetParam(ForceType<Targ9>(), vm, 10, &ptr),
|
||||||
GetParam(ForceType<Targ10>(), vm, 11, &ptr)
|
GetParam(ForceType<Targ10>(), vm, 11, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 10);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -699,7 +677,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ9>(), vm, 10, &ptr),
|
GetParam(ForceType<Targ9>(), vm, 10, &ptr),
|
||||||
GetParam(ForceType<Targ10>(), vm, 11, &ptr)
|
GetParam(ForceType<Targ10>(), vm, 11, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 10);
|
|
||||||
return Return(vm, ret);
|
return Return(vm, ret);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -724,7 +701,6 @@ namespace SQConvert {
|
|||||||
GetParam(ForceType<Targ9>(), vm, 10, &ptr),
|
GetParam(ForceType<Targ9>(), vm, 10, &ptr),
|
||||||
GetParam(ForceType<Targ10>(), vm, 11, &ptr)
|
GetParam(ForceType<Targ10>(), vm, 11, &ptr)
|
||||||
);
|
);
|
||||||
sq_pop(vm, 10);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -787,7 +763,6 @@ namespace SQConvert {
|
|||||||
/* Delegate it to a template that can handle this specific function */
|
/* Delegate it to a template that can handle this specific function */
|
||||||
return HelperT<Tmethod>::SQCall((Tcls *)real_instance, *(Tmethod *)ptr, vm);
|
return HelperT<Tmethod>::SQCall((Tcls *)real_instance, *(Tmethod *)ptr, vm);
|
||||||
} catch (SQInteger e) {
|
} catch (SQInteger e) {
|
||||||
sq_pop(vm, nparam);
|
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -849,7 +824,6 @@ namespace SQConvert {
|
|||||||
/* Delegate it to a template that can handle this specific function */
|
/* Delegate it to a template that can handle this specific function */
|
||||||
return HelperT<Tmethod>::SQCall((Tcls *)NULL, *(Tmethod *)ptr, vm);
|
return HelperT<Tmethod>::SQCall((Tcls *)NULL, *(Tmethod *)ptr, vm);
|
||||||
} catch (SQInteger e) {
|
} catch (SQInteger e) {
|
||||||
sq_pop(vm, nparam);
|
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -874,9 +848,6 @@ namespace SQConvert {
|
|||||||
template <typename Tcls, typename Tmethod, int Tnparam>
|
template <typename Tcls, typename Tmethod, int Tnparam>
|
||||||
inline SQInteger DefSQConstructorCallback(HSQUIRRELVM vm)
|
inline SQInteger DefSQConstructorCallback(HSQUIRRELVM vm)
|
||||||
{
|
{
|
||||||
/* Find the amount of params we got */
|
|
||||||
int nparam = sq_gettop(vm);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
/* Create the real instance */
|
/* Create the real instance */
|
||||||
Tcls *instance = HelperT<Tmethod>::SQConstruct((Tcls *)NULL, (Tmethod)NULL, vm);
|
Tcls *instance = HelperT<Tmethod>::SQConstruct((Tcls *)NULL, (Tmethod)NULL, vm);
|
||||||
@@ -885,7 +856,6 @@ namespace SQConvert {
|
|||||||
instance->AddRef();
|
instance->AddRef();
|
||||||
return 0;
|
return 0;
|
||||||
} catch (SQInteger e) {
|
} catch (SQInteger e) {
|
||||||
sq_pop(vm, nparam);
|
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user