aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/big.c
diff options
context:
space:
mode:
authorPatrik Nyblom <[email protected]>2011-12-02 15:27:13 +0100
committerPatrik Nyblom <[email protected]>2011-12-02 15:27:40 +0100
commit0d273c54d93fd0ddf03f98d138f302442a0f65f9 (patch)
tree635977fc0ef2b8236c9d619c014a8b9f1d07af42 /erts/emulator/beam/big.c
parent86cd971ea4fee5fb596cd06e0dc8da60f4cf65d1 (diff)
parent42286b769c3cb6b9f8dd2dccf31e4232d6795d4e (diff)
downloadotp-0d273c54d93fd0ddf03f98d138f302442a0f65f9.tar.gz
otp-0d273c54d93fd0ddf03f98d138f302442a0f65f9.tar.bz2
otp-0d273c54d93fd0ddf03f98d138f302442a0f65f9.zip
Merge branch 'pan/win64-port'
* pan/win64-port: Update static cache Back to not using 32bit time_t Remove ancient WaitForInputIdle workaround Iron out bugs in Win64 found in daily builds Make Win64 build work both under MSYS and Cygwin Fix aclocal.m4 to override changes in opu Make whole of OTP build and release on Win64 Get cerl and distribution working in Win64 Get working prompt in Win64 using bootstrap code Build Win64 Erlang emulator using MSYS Add static win64 cache OTP-9130 OTP-9766
Diffstat (limited to 'erts/emulator/beam/big.c')
-rw-r--r--erts/emulator/beam/big.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/erts/emulator/beam/big.c b/erts/emulator/beam/big.c
index 46db9ca99c..976f05c990 100644
--- a/erts/emulator/beam/big.c
+++ b/erts/emulator/beam/big.c
@@ -1325,7 +1325,7 @@ static dsize_t I_lshift(ErtsDigit* x, dsize_t xl, Sint y,
return 1;
}
else {
- long ay = (y < 0) ? -y : y;
+ SWord ay = (y < 0) ? -y : y;
int bw = ay / D_EXP;
int sw = ay % D_EXP;
dsize_t rl;
@@ -1450,6 +1450,20 @@ erts_make_integer(Uint x, Process *p)
return uint_to_big(x,hp);
}
}
+/*
+ * As erts_make_integer, but from a whole UWord.
+ */
+Eterm
+erts_make_integer_from_uword(UWord x, Process *p)
+{
+ Eterm* hp;
+ if (IS_USMALL(0,x))
+ return make_small(x);
+ else {
+ hp = HAlloc(p, BIG_UWORD_HEAP_SIZE(x));
+ return uword_to_big(x,hp);
+ }
+}
/*
** convert Uint to bigint