File: heapalloc.py

package info (click to toggle)
giac 1.9.0.93%2Bdfsg2-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 117,732 kB
  • sloc: cpp: 404,272; ansic: 205,462; python: 30,548; javascript: 28,788; makefile: 17,997; yacc: 2,690; lex: 2,464; sh: 705; perl: 314; lisp: 216; asm: 62; java: 41; xml: 36; sed: 16; csh: 7; pascal: 6
file content (43 lines) | stat: -rw-r--r-- 1,072 bytes parent folder | download | duplicates (3)
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
# check that we can do certain things without allocating heap memory

import micropython

# Check for stackless build, which can't call functions without
# allocating a frame on heap.
try:
    def stackless(): pass
    micropython.heap_lock(); stackless(); micropython.heap_unlock()
except RuntimeError:
    print("SKIP")
    raise SystemExit

def f1(a):
    print(a)

def f2(a, b=2):
    print(a, b)

def f3(a, b, c, d):
    x1 = x2 = a
    x3 = x4 = b
    x5 = x6 = c
    x7 = x8 = d
    print(x1, x3, x5, x7, x2 + x4 + x6 + x8)

global_var = 1

def test():
    global global_var, global_exc
    global_var = 2      # set an existing global variable
    for i in range(2):  # for loop
        f1(i)           # function call
        f1(i * 2 + 1)   # binary operation with small ints
        f1(a=i)         # keyword arguments
        f2(i)           # default arg (second one)
        f2(i, i)        # 2 args
    f3(1, 2, 3, 4)  # function with lots of local state

# call test() with heap allocation disabled
micropython.heap_lock()
test()
micropython.heap_unlock()