-
Fix SPDX format
-
Support multi return values import function(not call_indirect)
-
Support immutable import globals
-
Support default import API 'dumpMemoryRegion'
-
Performance improvements:
- 2% code size reduce on tricore
- 2% cpu performance improvement on polybench
- faster function call by less reg spills and moves than v3
- Fixed the problem that load opcode will trigger Implement Limitation on TRICORE.
- Fixed the misbehavior of wasm memcpy on x86 backend
- Fix SPDX format
- Fix encoding compatibility
- Fixed wrong machine type for type_cast instruction
- Fix missed signatureType in findGlobalByName
- x86_64 backend:
- fix wrong register selection of f32/f64 max/min.
- Tricore backend:
- fixed i32.load16_s and i32.load16_u producing incorrect results with unaligned addresses due to shared load cache between signed and unsigned variants
- Condense order changed to top->end
Add u32 and u64 type to WasmValue
- Add version number to checking to binary module
- Fixed the issue where each memory access on TRICORE would call the memory extend function.
- Fixed the issue where
setMaxRamwill crash when wasm module does not initialize runtime.
- Fixed
memory.growwill provide wrong page size to runtime.
- Implemented multi values feature.
- Refine signal handler for better working with system coredump. (cherry-pick from 2.3.4)
- Add a WasmModule class wrappers over raw compiler and runtime. It saves integrator from handling low level interfaces.
- Add experimental support for DWARF5 debugging symbols.
- API
abortTrapis removed. - Import functions must assign last parameter as a
T*context. - Add
builtin.tracePointAPI for tracing without performance overhead.- Tracing Extension is designed for record this trace points and write to file.
- Fixed
builtin.isFunctionLinkedreturn incorrect result when index larger than 256. (cherry-pick from 2.3.5) - Fixed that
recoverGlobalsToRegswill dirty writeaddrParamRegs[3]in exported function wrapper (with multi values). - Fixed emitted instructions for select, keep CPUFlags unchanged.
- Fixed API function can't interrupt a Module when the API is call indirectly
- Unify exported ModuleFunction, RawModuleFunction API.
- Trap code is cleaned at exit of Wasm function call
- Add check of mmap failed in MemUtils
- Added compilerMemoryAllocFnc and compilerMemoryFreeFnc used for compiler-time-stack memory management in Compiler construction, and allow user-defined context (like maxRAM).
- Stop supporting of tc1.6 and only support tc1.8
- Replace
vb_MemUtilswithvb_libutilsfor tricore backend.
- Fixed incorrect parameter alignment in runtime.
- TriCore Backend: Fix f32NanToCanonical assert failure
- Use LINEAR_MEMORY_BOUNDS_CHECKS on real time operation system e.g. QNX by default.
builtin.isFunctionLinkedtakes table index as parameter instead of function index. This change is for consistency with frontend compiler.
- Fix mis use of fucIndex and sigIndex in tricore emitWasmToNativeAdapter, which may lead to crash.
- Fixed compile errors in
Exception::whatintroduced byVB_DISABLE_NOEXCEPT.
- Streamlined stacktrace implementation.
- Implemented sign extension instructions.
- Implemented bulk memory
memory.copyandmemory.fillinstructions. - Added support for debugging Wasm modules.
- Added new builtin function:
copyFromLinkedMemory. - add persistent mode of signal handler
- During call import function, only save volatile registers and native ABI parameter registers
- Added compilation option
VB_DISABLE_NOEXCEPTto disablenoexcept. - Optimized emitted jit code for
dropopcode. - Changed WasmABI, store and recover in reg local on demand (#118).
- Introduced control flow analysis to reduce check stack fences in active stack overflow check mode.
- Allocated register for the first i32 global.
- Optimized emitted jit code for
br_tableopcode. - Refactor compile flow of select instruction
- TriCore Backend
- Optimized emitted jit code for
ctzopcode. - Optimized memory bound check with
FCALLandFRETinstructions. - Optimized with 16bit instructions for mov/add/ldr/str/eq/lt.
- Improved performance of 64-bit add/sub/and/or/xor.
- Improved performance of compare with imm.
- Supported odd length of linked memory.
- Optimized emitted jit code for
-
Replaced "eager" parameter of LinearMemoryAllocator with a compile-time config EAGER_ALLOCATION so compiler can take advantage of this setting.
-
ILogger receives
Span<char const> const &as parameter.
- Fixed a bug where block-expr following an always-negated if-expr would emit incorrect jit code.
- Fixed a bug where target result types mismatched
br_tablein unreachable block would fail module validation. - Fixed a bug where high register pressure will crash the compiler.
- TriCore Backend
- Fixed a bug where parameters reg will be overwritten.
- Fixed a bug where
loadwill overwrite other scratch registers.
- Compiler can now take an rvalue reference of the output binary directly.
- Fixed incorrect trap error messages.
- Fixed a bug where compilation could fail with unknown/missing imports.
- Added an option to allow compilation with unknown/missing imports. Calling such a function will produce a trap with TrapCode::CALLED_FUNCTION_NOT_LINKED
- Added a new builtin function isFunctionLinked which takes a function index as parameter and returns 1 if this function is linked (or defined in the Wasm module, i.e. can be called) and 0 otherwise
- Removed config option USE_MOCK_IMPORTS
- Added an optimization so if(-else) statements for which the condition can be evaluated at compile-time only produce one of the two blocks and no branch
- Removed auto-unlink feature and the corresponding entry in config.hpp
- Optimized trap handling and reordered TrapCode enum entries
- Linked memory is now auto-unlinked by default when a new API call is performed. This can be configured in config.hpp.
- Improvements for TriCore
- Remove unneeded destructor, static variables and do not rely on global variables being initialized
- TriCore will now default to statically linked AUX functions