summaryrefslogtreecommitdiffstatshomepage
path: root/tests/basics/nanbox_smallint.py
blob: 9451ab32846610326f8d3b01dc3b91190fbd6461 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# Test creating small integers without heap allocation in nan-boxing mode.

try:
    import micropython
except ImportError:
    print("SKIP")
    raise SystemExit

try:
    # Test for nan-box build by allocating a float while heap is locked.
    # This should pass on nan-box builds.
    micropython.heap_lock()
    float(123)
    micropython.heap_unlock()
except:
    micropython.heap_unlock()
    print("SKIP")
    raise SystemExit

# Check that nan-boxing uses 64-bit floats (eg it's not object representation C).
if float("1e100") == float("inf"):
    print("SKIP")
    raise SystemExit

micropython.heap_lock()
print(int("0x80000000", 16))
micropython.heap_unlock()

# This is the most positive small integer.
micropython.heap_lock()
print(int("0x3fffffffffff", 16))
micropython.heap_unlock()

# This is the most negative small integer.
micropython.heap_lock()
print(int("-0x3fffffffffff", 16) - 1)
micropython.heap_unlock()

x = 1
micropython.heap_lock()
print((x << 31) + 1)
micropython.heap_unlock()

x = 1
micropython.heap_lock()
print((x << 45) + 1)
micropython.heap_unlock()