diff options
author | Mike Pall <mike> | 2011-01-26 21:46:02 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2011-01-26 21:46:02 +0100 |
commit | 3184f1716925f96b3d56c2795a0769bb3463f54e (patch) | |
tree | c9364c781e88b321ac4caffa566ccb5fa6659f83 /src/lj_cdata.c | |
parent | 2526498c7126f3e60d1f3a8d72c97bf20bf4a49e (diff) | |
download | luajit-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.c | 34 |
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. */ | ||
257 | uint64_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 |