From cd35dd9d9a29836906acdce60c931f6352b536d0 Mon Sep 17 00:00:00 2001 From: Damien George Date: Mon, 5 Aug 2019 16:32:10 +1000 Subject: py: Allow to pass in read-only buffers to viper and inline-asm funcs. Fixes #4936. --- tests/micropython/viper_addr.py | 10 ++++++++++ tests/micropython/viper_addr.py.exp | 1 + 2 files changed, 11 insertions(+) (limited to 'tests/micropython') diff --git a/tests/micropython/viper_addr.py b/tests/micropython/viper_addr.py index cd953ce07..0d8efb90b 100644 --- a/tests/micropython/viper_addr.py +++ b/tests/micropython/viper_addr.py @@ -9,6 +9,13 @@ def memset(dest:ptr8, c:int, n:int): for i in range(n): dest[i] = c +@micropython.viper +def memsum(src:ptr8, n:int) -> int: + s = 0 + for i in range(n): + s += src[i] + return s + # create array and get its address ar = bytearray('0000') addr = get_addr(ar) @@ -27,3 +34,6 @@ print(ar) # pass direct pointer to array buffer, with offset memset(addr + 2, ord('3'), len(ar) - 2) print(ar) + +# pass a read-only bytes object in +print(memsum(b'\x01\x02\x03\x04', 4)) diff --git a/tests/micropython/viper_addr.py.exp b/tests/micropython/viper_addr.py.exp index 87a18e1e2..8e08db9a5 100644 --- a/tests/micropython/viper_addr.py.exp +++ b/tests/micropython/viper_addr.py.exp @@ -4,3 +4,4 @@ bytearray(b'0000') bytearray(b'1111') bytearray(b'2222') bytearray(b'2233') +10 -- cgit v1.2.3