qemu-arm: Enable GC and native code-gen; enable more tests.
This commit is contained in:
parent
3f9f9cac75
commit
99dde4ed1f
@ -1,6 +1,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <malloc.h>
|
||||||
|
|
||||||
#include "py/nlr.h"
|
#include "py/nlr.h"
|
||||||
#include "py/obj.h"
|
#include "py/obj.h"
|
||||||
@ -9,6 +10,7 @@
|
|||||||
#include "py/runtime0.h"
|
#include "py/runtime0.h"
|
||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
#include "py/stackctrl.h"
|
#include "py/stackctrl.h"
|
||||||
|
#include "py/gc.h"
|
||||||
#include "py/repl.h"
|
#include "py/repl.h"
|
||||||
#include "py/pfenv.h"
|
#include "py/pfenv.h"
|
||||||
|
|
||||||
@ -51,6 +53,8 @@ void do_str(const char *src) {
|
|||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
mp_stack_set_limit(10240);
|
mp_stack_set_limit(10240);
|
||||||
|
void *heap = malloc(16 * 1024);
|
||||||
|
gc_init(heap, (char*)heap + 16 * 1024);
|
||||||
mp_init();
|
mp_init();
|
||||||
do_str("print('hello world!')");
|
do_str("print('hello world!')");
|
||||||
mp_deinit();
|
mp_deinit();
|
||||||
|
@ -4,11 +4,11 @@
|
|||||||
|
|
||||||
#define MICROPY_ALLOC_PATH_MAX (512)
|
#define MICROPY_ALLOC_PATH_MAX (512)
|
||||||
#define MICROPY_EMIT_X64 (0)
|
#define MICROPY_EMIT_X64 (0)
|
||||||
#define MICROPY_EMIT_THUMB (0)
|
#define MICROPY_EMIT_THUMB (1)
|
||||||
#define MICROPY_EMIT_INLINE_THUMB (0)
|
#define MICROPY_EMIT_INLINE_THUMB (1)
|
||||||
#define MICROPY_MEM_STATS (0)
|
#define MICROPY_MEM_STATS (0)
|
||||||
#define MICROPY_DEBUG_PRINTERS (0)
|
#define MICROPY_DEBUG_PRINTERS (0)
|
||||||
#define MICROPY_ENABLE_GC (0)
|
#define MICROPY_ENABLE_GC (1)
|
||||||
#define MICROPY_STACK_CHECK (1)
|
#define MICROPY_STACK_CHECK (1)
|
||||||
#define MICROPY_HELPER_REPL (0)
|
#define MICROPY_HELPER_REPL (0)
|
||||||
#define MICROPY_HELPER_LEXER_UNIX (0)
|
#define MICROPY_HELPER_LEXER_UNIX (0)
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <malloc.h>
|
||||||
|
|
||||||
#include "py/nlr.h"
|
#include "py/nlr.h"
|
||||||
#include "py/obj.h"
|
#include "py/obj.h"
|
||||||
@ -9,6 +10,7 @@
|
|||||||
#include "py/runtime0.h"
|
#include "py/runtime0.h"
|
||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
#include "py/stackctrl.h"
|
#include "py/stackctrl.h"
|
||||||
|
#include "py/gc.h"
|
||||||
#include "py/repl.h"
|
#include "py/repl.h"
|
||||||
#include "py/pfenv.h"
|
#include "py/pfenv.h"
|
||||||
|
|
||||||
@ -58,6 +60,8 @@ end:
|
|||||||
int main() {
|
int main() {
|
||||||
const char a[] = {"sim"};
|
const char a[] = {"sim"};
|
||||||
mp_stack_set_limit(10240);
|
mp_stack_set_limit(10240);
|
||||||
|
void *heap = malloc(256 * 1024);
|
||||||
|
gc_init(heap, (char*)heap + 256 * 1024);
|
||||||
mp_init();
|
mp_init();
|
||||||
int r = tinytest_main(1, (const char **) a, groups);
|
int r = tinytest_main(1, (const char **) a, groups);
|
||||||
mp_deinit();
|
mp_deinit();
|
||||||
@ -66,6 +70,18 @@ int main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void gc_collect(void) {
|
void gc_collect(void) {
|
||||||
|
gc_collect_start();
|
||||||
|
|
||||||
|
// get the registers and the sp
|
||||||
|
jmp_buf env;
|
||||||
|
setjmp(env);
|
||||||
|
volatile mp_uint_t dummy;
|
||||||
|
void *sp = (void*)&dummy;
|
||||||
|
|
||||||
|
// trace the stack, including the registers (since they live on the stack in this function)
|
||||||
|
gc_collect_root((void**)sp, ((uint32_t)MP_STATE_VM(stack_top) - (uint32_t)sp) / sizeof(uint32_t));
|
||||||
|
|
||||||
|
gc_collect_end();
|
||||||
}
|
}
|
||||||
|
|
||||||
mp_lexer_t *mp_lexer_new_from_file(const char *filename) {
|
mp_lexer_t *mp_lexer_new_from_file(const char *filename) {
|
||||||
|
@ -46,8 +46,8 @@ testgroup_member = (
|
|||||||
|
|
||||||
## XXX: may be we could have `--without <groups>` argument...
|
## XXX: may be we could have `--without <groups>` argument...
|
||||||
# currently these tests are selected because they pass on qemu-arm
|
# currently these tests are selected because they pass on qemu-arm
|
||||||
test_dirs = ('basics',) # 'float', 'import', 'io', 'misc')
|
test_dirs = ('basics', 'micropython', 'inlineasm') # 'float', 'import', 'io', 'misc')
|
||||||
exclude_tests = ('basics/builtin_override.py', 'basics/class_super_object.py', 'basics/memoryview_gc.py',)
|
exclude_tests = ('basics/builtin_override.py', 'basics/class_super_object.py', 'micropython/heapalloc.py')
|
||||||
|
|
||||||
output = []
|
output = []
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user