blueloveTH 2 years ago
parent
commit
2c68dd63a5
2 changed files with 7 additions and 14 deletions
  1. 5 5
      docs/features/long.md
  2. 2 9
      python/_long.py

+ 5 - 5
docs/features/long.md

@@ -8,6 +8,11 @@ Unlike cpython, pkpy's `int` is of limited precision (64-bit).
 For arbitrary sized integers, we provide a builtin `long` type, just like python2's `long`.
 `long` is implemented via pure python in [_long.py](https://github.com/blueloveTH/pocketpy/blob/main/python/_long.py).
 
+!!!
+This feature is still under development.
+Some operations are missing, and some operations are not optimized.
+!!!
+
 ### Create a long object
 
 You can use `L` suffix to create a `long` literal from a decimal literal.
@@ -25,8 +30,3 @@ a = 2L         # use `L` suffix to create a `long` object
 print(a ** 1000)
 # 10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376L
 ```
-
-!!!
-This feature is still under development.
-Some operations are missing, and some operations are not optimized.
-!!!

+ 2 - 9
python/_long.py

@@ -1,12 +1,5 @@
-from c import sizeof
-
-# https://www.cnblogs.com/liuchanglc/p/14203783.html
-if sizeof('void_p') == 4:
-    PyLong_SHIFT = 28//2 - 1
-elif sizeof('void_p') == 8:
-    PyLong_SHIFT = 60//2 - 1
-else:
-    raise NotImplementedError
+# after v1.2.2, int is always 64-bit
+PyLong_SHIFT = 60//2 - 1
 
 PyLong_BASE = 2 ** PyLong_SHIFT
 PyLong_MASK = PyLong_BASE - 1