summaryrefslogtreecommitdiff
path: root/src/lj_cdata.c
diff options
context:
space:
mode:
authorMike Pall <mike>2011-01-26 21:46:02 +0100
committerMike Pall <mike>2011-01-26 21:46:02 +0100
commit3184f1716925f96b3d56c2795a0769bb3463f54e (patch)
treec9364c781e88b321ac4caffa566ccb5fa6659f83 /src/lj_cdata.c
parent2526498c7126f3e60d1f3a8d72c97bf20bf4a49e (diff)
downloadluajit-3184f1716925f96b3d56c2795a0769bb3463f54e.tar.gz
luajit-3184f1716925f96b3d56c2795a0769bb3463f54e.tar.bz2
luajit-3184f1716925f96b3d56c2795a0769bb3463f54e.zip
FFI: Move code for cdata arithmetic to lj_carith.c.
Diffstat (limited to 'src/lj_cdata.c')
-rw-r--r--src/lj_cdata.c34
1 files changed, 0 insertions, 34 deletions
diff --git a/src/lj_cdata.c b/src/lj_cdata.c
index 9033d492..a3257249 100644
--- a/src/lj_cdata.c
+++ b/src/lj_cdata.c
@@ -251,38 +251,4 @@ void lj_cdata_set(CTState *cts, CType *d, uint8_t *dp, TValue *o, CTInfo qual)
251 lj_cconv_ct_tv(cts, d, dp, o, 0); 251 lj_cconv_ct_tv(cts, d, dp, o, 0);
252} 252}
253 253
254/* -- 64 bit integer arithmetic helpers ----------------------------------- */
255
256/* 64 bit integer x^k. */
257uint64_t lj_cdata_powi64(uint64_t x, uint64_t k, int isunsigned)
258{
259 uint64_t y = 0;
260 if (k == 0)
261 return 1;
262 if (!isunsigned) {
263 if ((int64_t)k < 0) {
264 if (x == 0)
265 return U64x(7fffffff,ffffffff);
266 else if (x == 1)
267 return 1;
268 else if ((int64_t)x == -1)
269 return (k & 1) ? -1 : 1;
270 else
271 return 0;
272 }
273 }
274 for (; (k & 1) == 0; k >>= 1) x *= x;
275 y = x;
276 if ((k >>= 1) != 0) {
277 for (;;) {
278 x *= x;
279 if (k == 1) break;
280 if (k & 1) y *= x;
281 k >>= 1;
282 }
283 y *= x;
284 }
285 return y;
286}
287
288#endif 254#endif