mirror of
https://gitee.com/openharmony/arkcompiler_ets_runtime
synced 2024-10-07 16:13:49 +00:00
b11d945856
The exception object is passed directly as a value inside the IR will cause acc to generate many phi nodes (other vreg rarely generate phi nodes when exceptions are handled). The current modification is to add a GET_EXCEPTION directive (placed at the beginning of the catch part) to indicate that the exception object is read after an exception occurs, in this case lowering is simpler and does not need to consider different value outputs, the logic is more concise and the number of code instructions is reduced. Replace ladi and fdai HIR with MIR: these two instructions to get the immediate number, do not need to use HIR to handle, this will increase the number of HIR instructions, simplify lowering. issue:https://gitee.com/openharmony/ark_js_runtime/issues/I4T6HX Signed-off-by: wanyanglan <wanyanglan1@huawei.com> Change-Id: I751677e11b50976af4e2fc5a6cac4457fa9a44df |
||
---|---|---|
docs | ||
ecmascript | ||
test | ||
.gitignore | ||
BUILD.gn | ||
bundle.json | ||
js_runtime_config.gni | ||
LICENSE | ||
OAT.xml | ||
README_zh.md | ||
README.md | ||
run_test262.sh |
ARK JS Runtime Module
Introduction
ARK JS Runtime is the runtime used by JavaScript JS
applications on OpenHarmony. It consists of the JS object allocator, garbage collector GC
, a standard library compliant with ECMAScript specifications, ARK bytecode interpreter, inline caches that store hidden classes, and the ARK Foreign Function Interface AFFI
.
For more infomation, see: ARK Runtime Subsystem.
ARK JS runtime architecture
Directory Structure
/ark/js_runtime
├─ ecmascript # JS object definition
│ ├─ base # Base helper class
│ ├─ builtins # ECMAScript library
│ ├─ class_linker # Bytecode pre-processing module
│ ├─ compiler # JS compiler
│ ├─ containers # Non-ECMAScript container library
│ ├─ cpu_profiler # CPU Performance Analyzer
│ ├─ hprof # Memory analysis utility class
│ ├─ ic # Inline cache module
│ ├─ interpreter # JS interpreter
│ ├─ jobs # Queue of jobs
│ ├─ js_vm # ARK command line tool
│ ├─ mem # Memory management module
│ ├─ napi # External native interface
│ ├─ regexp # Regular expression engine module
│ ├─ snapshot/mem # Snapshot module
│ ├─ tests # Unit test cases
│ ├─ thread # Thread pool
│ ├─ tooling # JS debugger
│ └─ vmstat # Runtime status utility classes
└─ test # Module test cases
Constraints
- Only the bytecode file generated by the ARK JS frontend can be run.
- Only support ES2015 standard and strict mode ("use strict").
- Don't support dynamically create functions via string (e.g., new Function("console.log(1))).
Build
./build.sh --product-name Hi3516DV300 --build-target ark_js_runtime
Available APIs
For details, see NAPI.
Usage Guidelines
For details about how to generate JS bytecodes, see Using the Toolchain.
To run bytecodes:
$ cd out/release
$ export LD_LIBRARY_PATH=clang_x64/ark/ark_js_runtime:clang_x64/ark/ark:clang_x64/global/i18n:../../prebuilts/clang/ohos/linux-x86_64/llvm/lib/
$ ./clang_x64/ark/ark_js_runtime/ark_js_vm helloworld.abc
For more infomation, please see: ARK-Runtime-Usage-Guide.