| /arkcompiler/runtime_core/docs/ |
| D | doxygen.config | 3 # This file describes the settings to be used by the documentation system 37 # The PROJECT_NUMBER tag can be used to enter a project or revision number. This 52 # the logo to the output directory. 56 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path 58 # entered, it will be relative to the location where doxygen was started. If 63 # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- 73 # If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII 74 # characters to appear in the names of generated files. If set to NO, non-ASCII 81 # The OUTPUT_LANGUAGE tag is used to specify the language in which all 83 # information to generate all constant output in the proper language. [all …]
|
| D | runtime-compiled_code-interaction.md | 9 * Transition from the interpeter to compiled code and vise versa 17 Panda runtime as a set of functions aimed to execute managed code. The runtime consists of several … 18 The document refers to the interpreter and the compiler modules. 20 …rpreter is a part of the runtime aimed to execute bytecode of managed functions. The interpreter i… 23 The compiler is aimed to translate managed function's bytecode to native code. The compiler has an … 25 changes its entrypoint to newly generated code. Next time when the function gets called native code… 28 Panda runtime and managed code must call functions according to the target calling convention. 29 Compiled code of a managed function must accept one extra argumnent: the pointer to `panda::Method`… 36 - a pointer to `panda::Method` in the register R0. 48 | pending_exception_ | panda::ObjectHeader* | A pointer to a thrown exception or 0 if there is n… [all …]
|
| D | rationale-for-bytecode.md | 26 Here comes the bytecode. Simply said, it is an attempt to build an abstract CPU on top of real 28 special program called _interpreter_. The goal of the interpreter is to read our unified _virtual_ 30 making interpretation slower than _native code execution_. In return, we get the ability to 38 to distinguish between an abstract system and the hardware. 45 One very important question is how an operation refers to its operands. 52 push_arg1 ; copy the first argument to the top of the stack 53 push_arg2 ; copy the second argument to the top of stack 74 require up to 4 bytes to encode. 76 At the same time, to execute a stack-based addition we need to run 3 instructions compared to 77 just a single register-based instruction. Since the interpreter has an extra work to do to read [all …]
|
| D | file_format.md | 6 * Support for fast access to information. 13 doesn't fit in 16-bit unsigned integer. It leads to application developer have to create several 16 Current binary file format should extend these limits to conform to the modern requirements. 18 To achieve this, all references in the binary file are 4 bytes long. It allows to have 4Gb for 21 The format uses [TaggedValue](#taggedvalue) which allows to store only information we have and 22 avoid 0 offsets to absent information. 24 But to achieve more compactness 16-bit indexes are used to refer classes, methods and fields in 30 Binary file format should support fast access to information. It means that 33 a sorted list of offsets to classes. This index is compact and allows to find a type definition 40 having an offset to an entity it doesn't matter whether the entity is local or foreign. [all …]
|
| D | design-of-interpreter.md | 11 | Requirements | Enlists the requirements to the component. | 12 | Key Design Decisions | Summarizes the key decisions to address the requirements. | 16 Please refer to the [glossary](glossary.md) for terminology clarification. 23 1. The platform should scale from microcontrollers to hi-end mobile phones: 25 1. It should be able to run consuming 64Kb of RAM. 33 1. Bytecode should allow the interpreter to run no slower than state of the art interpreters. 34 1. Bytecode should be compact in size to avoid bloating application code. 35 1. Bytecode description should have a single entry point to simplify maintenance 40 1. Bytecode is register-based: all arguments and variables are mapped to virtual registers, 58 * Converter from bytecode to the compiler's intermediate representation is partially implemented [all …]
|
| D | ir_format.md | 4 * Possibility to implement various optimizations and analyses 8 * Be able to convert to other IR and back 12 …to have auxiliary functionality for various code transformations and analyses. The structure of th… 14 … to be able to change the order of the passes, add and delete passes(If 2 passes have a dependency… 15 Second, we need to support the transfer of information between optimizations. 52 The benefits of some optimizations are not obvious or do need profiling information to implement th… 58 !NOTE It is possible to write other optimizations based on the specifics of the language and VM 62 We will try to make it possible to pass optimizations in an arbitrary order. Some restrictions will… 68 * Converting to LLVM IR 70 * Common properties will be introduced for the instructions, making it easier to add new instructio… [all …]
|
| D | on-stack-replacement.md | 7 …, we mean the transition from interpreter code to optimized code. Opposite transition - from optim… 61 To ensure all loops in the compiled code may be entered from the interpreter, we need to avoid loop… 62 … OSR-methods special osr-entry flag is added to the loop-header basic blocks and some optimization… 70 This instruction contains information about all live virtual registers at the enter to the loop. 76 On each OSR entry, we need to restore execution context. 77 To do this, we need to know all live virtual registers at this moment. 82 which is necessary to generate an OSR entry code. 85 1. move all constants to the cpu registers or frame slots by inserting move or store instructions 86 2. encodes jump instruction to the head of the loop where the corresponding OsrSaveState is located 90 Accordingly, they need to be restored back to the CPU registers or frame slots. [all …]
|
| D | aot.md | 29 To access to the `.text` and `.aot` sections from AOT loader following symbols are defined: 30 - `code` - points to the start of `.text` section 31 - `code_end` - points to the end of `.text` section 32 - `aot` - points to the start of `.aot` section 33 - `aot_end` - points to the end of `.aot` section 39 offsets to other headers, etc. 47 therefore compiled Ark bytecode file must be bit by bit equal to the file loaded in runtime. 52 …ppropriate data during AOT file loading at runtime. This data allows compiler's codegen to generate 75 Knowing offset to the `.aot_got` table, codegen calculates offset to the corresponding entrypoint a… 92 80: adr x30, #-88 -------------- ; Put to the x30 address of last entry in the table [all …]
|
| D | assembly_format.md | 5 …to be fed to the Panda assembler, a dedicated tool that translates them to binary files that can b… 11 …to be) supported by the platform. Instead, Panda assembly can be thought as a separate close-to-by… 13 … executable file, it is not expected to check for language semantics. This responsibility is deleg… 28 …xed with `0x`. They are first converted to a bit representation that corresponds to a hex, and the… 50 * Letters from `a` to `z`. 51 * Letters from `A` to `Z`. 52 * Digits from `0` to `9`. 70 …sembly does not favor any language as the platform is designed to support many of them. To deal wi… 107 | `ctor` | Marks a function as object constructor. It will be renamed in binary file according to… 108 | `cctor` | Marks a function as static constructor. It will be renamed in binary file according to… [all …]
|
| D | deoptimization.md | 7 …rocesses the result of the check and if the result is incorrect the output to the interpreter occu… 17 The instruction `DeoptimizeIf` is encoded as conditional branch to the slow path if input value is … 22 The slow path encodes a call to the runtime function `Deoptimize`. We do the following for this: 23 1. fill the `Frame`(saves pointer to current CFrame) and `is_compiled_frame_`(saves true) fields in… 68 * pointer to the current thread 70 * pointer to first restoring interpreter Frame 71 * pointer to CFrame origin 72 * pointer to last restoring interpreter Frame 78 …to values before calling the method, restores callee saved registers (which we saved in the method… 84 …to I2C(Interpreter To Compile) bridge, set last IFrame's previous frame to this C2I bridge frame a… [all …]
|
| /arkcompiler/ets_frontend/ts2panda/tests/ |
| D | scope.test.ts | 9 * Unless required by applicable law or agreed to in writing, software 32 it("test add 'none' variable to GlobalScope", function () { 35 expect(variable instanceof GlobalVariable).to.be.true; 37 expect(outVariable === variable).to.be.true; 38 expect(lv).to.be.equal(0); 39 expect(sp).to.be.equal(scope); 42 it("test add 'var' variable to GlobalScope", function () { 45 expect(variable instanceof GlobalVariable).to.be.true; 47 expect(outVariable === variable).to.be.true; 48 expect(lv).to.be.equal(0); [all …]
|
| /arkcompiler/runtime_core/verification/util/ |
| D | relation.h | 9 * Unless required by applicable law or agreed to in writing, software 38 void Relate(RelIndex from, RelIndex to) in Relate() argument 41 ASSERT(to < Inverse_.size()); in Relate() 42 Inverse_[to].Insert(from); in Relate() 43 Inverse_[to] |= Inverse_[from]; in Relate() 44 Direct_[from].Insert(to); in Relate() 45 Direct_[from] |= Direct_[to]; in Relate() 47 Direct_[to].ForAll([&](RelIndex dst) { in Relate() 53 Direct_[src].Insert(to); in Relate() 54 Direct_[src] |= Direct_[to]; in Relate() [all …]
|
| /arkcompiler/ets_runtime/ |
| D | LICENSE | 19 "control" means (i) the power, direct or indirect, to cause the 28 including but not limited to software source code, documentation 33 not limited to compiled object code, generated documentation, 34 and conversions to other media types. 38 copyright notice that is included in or attached to the work 46 separable from, or merely link (or bind by name) to the interfaces of, 51 to that Work or Derivative Works thereof, that is intentionally 52 submitted to Licensor for inclusion in the Work by the copyright owner 53 or by an individual or Legal Entity authorized to submit on behalf of 56 to the Licensor or its representatives, including but not limited to [all …]
|
| /arkcompiler/toolchain/ |
| D | LICENSE | 19 "control" means (i) the power, direct or indirect, to cause the 28 including but not limited to software source code, documentation 33 not limited to compiled object code, generated documentation, 34 and conversions to other media types. 38 copyright notice that is included in or attached to the work 46 separable from, or merely link (or bind by name) to the interfaces of, 51 to that Work or Derivative Works thereof, that is intentionally 52 submitted to Licensor for inclusion in the Work by the copyright owner 53 or by an individual or Legal Entity authorized to submit on behalf of 56 to the Licensor or its representatives, including but not limited to [all …]
|
| /arkcompiler/runtime_core/ |
| D | LICENSE | 19 "control" means (i) the power, direct or indirect, to cause the 28 including but not limited to software source code, documentation 33 not limited to compiled object code, generated documentation, 34 and conversions to other media types. 38 copyright notice that is included in or attached to the work 46 separable from, or merely link (or bind by name) to the interfaces of, 51 to that Work or Derivative Works thereof, that is intentionally 52 submitted to Licensor for inclusion in the Work by the copyright owner 53 or by an individual or Legal Entity authorized to submit on behalf of 56 to the Licensor or its representatives, including but not limited to [all …]
|
| D | OAT.xml | 10 Unless required by applicable law or agreed to in writing, software 16 …plate for OpenHarmony OSS Audit Tool, please copy it to your project root dir and modify it refer … 17 …All configurations in this file will be merged to OAT-Default.xml, if you have any questions or co… 20 …ine all the license files in this project in , OAT will check license files according to this rule. 27 "compatibility" is used to check license compatibility in the specified path; 28 "license" is used to check source license header in the specified path; 29 "copyright" is used to check source copyright header in the specified path; 30 … "import" is used to check source dependency in the specified path, such as import ... ,include ... 31 … "filetype" is used to check file type in the specified path, supported file types: archive, binary 32 …"filename" is used to check whether the specified file exists in the specified path(projectroot me… [all …]
|
| /arkcompiler/runtime_core/compiler/docs/ |
| D | reg_alloc_graph_coloring_doc.md | 4 `Register allocator` assigns program variables to target CPU registers 18 …to Chromatic one; there are exist Perfect Elimination Order (PEO) - order in which graph deconstru… 19 …grams in SSA Form") and Pereira ("Register Allocation via Chordal Graphs") to construct PEO is use… 20 …to sequential numbering) in order <caller-saved, callee-saved>. In fact because these values with … 26 …for split if it has intersection with call-site. They will be split later, to let algorithm make a… 27 Here additionally to the built graph with regular edges that represent interference, it is built af… 37 …to potentially can increase register pressure, and make graph G’ not K-colorable as original graph… 38 … stage of coloring it is tried to satisfy these hints if possible. This approach is more flexible,… 42 To find biases it is used component search algorithm which is recursive call to DFS, until all node… 43 Biases are collected to array of tuples <bias color, call-sites count>, where color value initially… [all …]
|
| D | aot_resolve_string.md | 3 To get string literal by its identifier application has to perform special runtime call. To improve… 6 application have to perform `ResolveStringAot` runtime call that will return a pointer. That runtim… 13 To use the latter encoding the following conditions have to be met: 29 …tring-aot-threshold` controls how many strings could be save to PLT-slots (option applied to the w… 30 application, not to a single AOT-file). 47 String pointers stored inside PLT-slots have to be treated as GC-roots to prevent its scavenge in c… 48 references to it. 49 …onsible for storing PLT-slots containing references. It also provides methods to iterate over these 50 slots in order to scan and update them. As an optimization `AotManager` stores information about wh… 51 PLT-slot is referencing to an object in young space. That information allow to significantly reduce… [all …]
|
| /arkcompiler/ets_runtime/docs/ |
| D | overview.md | 5 …nerated ArkCompiler bytecodes. Unless otherwise specified, bytecodes refer to ArkCompiler bytecode… 16 ArkCompiler JS Runtime runs ArkCompiler bytecode files to implement JS semantic logic. 34 JS Runtime Subsystem contains various modules related to JS runtime: 43 - ArkCompiler JS Runtime is designed to provide a JS/TS application execution engine for OpenHarmon… 45 …To improve the application execution performance and security, ArkCompiler JS Runtime statically p… 47 …to process TS in the industry is to convert TS into JS and execute JS code with JS runtime. ts2abc… 49 …to implement concurrent processing. In this model, executors do not share data and communicate wit… 51 …to access and operate TS objects in OpenHarmony. ArkCompiler JS Runtime is planned to statically g…
|
| /arkcompiler/ets_frontend/ |
| D | LICENSE | 19 "control" means (i) the power, direct or indirect, to cause the 28 including but not limited to software source code, documentation 33 not limited to compiled object code, generated documentation, 34 and conversions to other media types. 38 copyright notice that is included in or attached to the work 46 separable from, or merely link (or bind by name) to the interfaces of, 51 to that Work or Derivative Works thereof, that is intentionally 52 submitted to Licensor for inclusion in the Work by the copyright owner 53 or by an individual or Legal Entity authorized to submit on behalf of 56 to the Licensor or its representatives, including but not limited to [all …]
|
| /arkcompiler/runtime_core/tests/cts-generator/ |
| D | README.md | 8 * `CTS_TEST_SELECT_OPTION` - options, passed to test-runner.rb. 18 -t, --template FILE Path to template yaml file to generate tests (required) 19 -s, --schema FILE Path to json schema for template yaml (required) 21 -o, --output DIR Path to directory where tests will be generated (required) 42 -p, --panda-build DIR Path to panda build directory (required) 43 …-t, --test-dir DIR Path to test directory to search tests recursively, or path to si… 45 --verbose-verifier Allow verifier to produce extended checking log 56 --report-dir DIR Where to put results, applicable for 'jtr' and 'allure' logger 57 --verifier-config PATH Path to verifier config file 64 --plugins PLUGINS Paths to runner plugins [all …]
|
| /arkcompiler/runtime_core/cmake/ |
| D | ClangTidy.cmake | 8 # Unless required by applicable law or agreed to in writing, software 16 # There seems to be a bug in either clang-tidy or CMake: 36 # Currently we fix a certain version of clang-tidy to avoid unstable linting, 44 DOC "Path to clang-tidy executable") 46 … "clang-tidy not found, but requested for build. Use -DPANDA_ENABLE_CLANG_TIDY=false to suppress.") 65 # do not otherwise need to be recompiled. Nothing actually uses this 66 # definition. We add it to targets on which we run clang-tidy just to 74 # Add a target to clang-tidy checks. 80 # "-check-to-be-disabled" 81 # "-glob-to-be-disabled-*" [all …]
|
| /arkcompiler/runtime_core/docs/bc_verification/ |
| D | absint_checks.md | 3 ### Physical compatibility of arguments to instructions and actual parameters to methods 14 These checks prevent unintended/unexpected access from one method to another. 15 Or access to wrong fields of object. 19 Checks of compatibility of objects in arguments to instructions and actual parameters to methods. 21 These checks eliminate calls of methods with incorrect `this`, wrong access to arrays, etc. 25 These checks performed to check correctness of context on exception handler entry. 27 They can help to detect usage of inconsistent information in registers in exception handlers. 41 These checks help to detect issues with unintended truncation/overflow/underflow etc. 49 For instance, check symmetry of monitorEnter/monitorExit calls to avoid deadlocking.
|
| /arkcompiler/ets_frontend/ts2panda/tests/statements/ |
| D | for.test.ts | 9 * Unless required by applicable law or agreed to in writing, software 55 expect(jumps.length).to.equal(1); 59 expect(checkInstructions(insns, expected)).to.be.true; 60 expect(jmpLabel).to.equal(insns[0]); 67 expect(jumps.length).to.equal(1); 71 expect(insns[4]).to.equal(jumps[0]); 72 expect(jmpLabel).to.equal(insns[2]); 79 expect(jumps.length).to.equal(2); 84 expect(jmpLabel).to.equal(insns[2]); 85 expect(jgezLabel).to.equal(insns[10]); [all …]
|
| /arkcompiler/runtime_core/verification/ |
| D | TODO.txt | 3 …- [x] (using atomic flag) Verification of method put under lock to exclude double verification at … 4 …(? is writing to the field at the same time from different thread same value needs to be synced, m… 5 (double verification is very rare case, and verification is to be expected idempotent operation) 6 …- [x] Passing PandaTypes to absint by const ref, because absint is not expected to change PandaTyp… 13 2. Refactor bitvector and relation to speedup things 16 4. Extend origins setup to all instructions and method entrance 19 6. Currently in CheckMethodsArgs types of arguments are checked with respect to typecasting in past 23 7. done Origins: at method entry, give different @start origins to parameters!
|