tests/heapalloc_*: Refactor some tests to work in strict stackless mode.
In strict stackless mode, it's not possible to make a function call with heap locked (because function activation record aka frame is allocated on heap). So, if the only purpose of function is to introduce local variable scope, move heap lock/unlock calls inside the function.
This commit is contained in:
parent
30fd8484eb
commit
e02cb9ec31
@ -5,6 +5,7 @@ import micropython
|
||||
e = ValueError("error")
|
||||
|
||||
def func():
|
||||
micropython.heap_lock()
|
||||
try:
|
||||
# This works as is because traceback is not allocated
|
||||
# if not possible (heap is locked, no memory). If heap
|
||||
@ -16,8 +17,7 @@ def func():
|
||||
raise e
|
||||
except Exception as e2:
|
||||
print(e2)
|
||||
micropython.heap_unlock()
|
||||
|
||||
micropython.heap_lock()
|
||||
func()
|
||||
print("ok")
|
||||
micropython.heap_unlock()
|
||||
|
@ -11,8 +11,10 @@ except (ImportError, AttributeError):
|
||||
heap_lock = heap_unlock = lambda:0
|
||||
|
||||
def do_iter(l):
|
||||
heap_lock()
|
||||
for i in l:
|
||||
print(i)
|
||||
heap_unlock()
|
||||
|
||||
def gen_func():
|
||||
yield 1
|
||||
@ -55,7 +57,6 @@ print(sum(t))
|
||||
heap_unlock()
|
||||
|
||||
# test iterating over collections with the heap locked
|
||||
heap_lock()
|
||||
do_iter(b'123')
|
||||
do_iter(ba)
|
||||
do_iter(ar)
|
||||
@ -66,4 +67,3 @@ do_iter(s)
|
||||
do_iter(fs)
|
||||
do_iter(g1)
|
||||
do_iter(g2)
|
||||
heap_unlock()
|
||||
|
@ -16,17 +16,17 @@ except:
|
||||
pass
|
||||
|
||||
def test():
|
||||
micropython.heap_lock()
|
||||
global global_exc
|
||||
global_exc.__traceback__ = None
|
||||
try:
|
||||
raise global_exc
|
||||
except StopIteration:
|
||||
print('StopIteration')
|
||||
micropython.heap_unlock()
|
||||
|
||||
# call test() with heap allocation disabled
|
||||
micropython.heap_lock()
|
||||
test()
|
||||
micropython.heap_unlock()
|
||||
|
||||
# print the exception that was raised
|
||||
buf = uio.StringIO()
|
||||
|
@ -1,5 +1,5 @@
|
||||
StopIteration
|
||||
Traceback (most recent call last):
|
||||
File , line 22, in test
|
||||
File , line 23, in test
|
||||
StopIteration:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user