Refine aot call_indirect opcode translation (#492)

Re-implement aot call_indirect opcode translation: when calling non-import function, translate it by LLVM call IR to call the function in AOTed code, so as to avoid calling runtime aot_call_indirect API which is much slower. For import function, keep calling aot_call_indirect API due to the possible pointer/string argument conversion.

And add prompt info while app heap is corrupted, change emit_leb to emit_uint32 inter fast-interp to refine footprint.

Signed-off-by: Wenyong Huang <wenyong.huang@intel.com>
This commit is contained in:
Wenyong Huang
2021-01-05 04:05:30 -06:00
committed by GitHub
parent f2a63d8623
commit 788cbf2a19
15 changed files with 529 additions and 191 deletions

View File

@ -63,10 +63,10 @@ mem_allocator_migrate(mem_allocator_t allocator,
pool_buf_new, pool_buf_size);
}
void
mem_allocator_destroy_lock(mem_allocator_t allocator)
bool
mem_allocator_is_heap_corrupted(mem_allocator_t allocator)
{
gc_destroy_lock((gc_handle_t) allocator);
return gc_is_heap_corrupted((gc_handle_t) allocator);
}
#else /* else of DEFAULT_MEM_ALLOCATOR */
@ -181,19 +181,5 @@ mem_allocator_migrate(mem_allocator_t allocator,
(mem_allocator_tlsf *) allocator_old);
}
int
mem_allocator_init_lock(mem_allocator_t allocator)
{
mem_allocator_tlsf *allocator_tlsf = (mem_allocator_tlsf *)allocator;
return os_mutex_init(&allocator_tlsf->lock);
}
void
mem_allocator_destroy_lock(mem_allocator_t allocator)
{
mem_allocator_tlsf *allocator_tlsf = (mem_allocator_tlsf *)allocator;
os_mutex_destroy(&allocator_tlsf->lock);
}
#endif /* end of DEFAULT_MEM_ALLOCATOR */