/arkcompiler/runtime_core/docs/ |
D | doxygen.config | 6 # All text after a double hash (##) is considered a comment and is placed in 7 # front of the TAG it is preceding. 9 # All text after a single hash (#) is considered a comment and will be ignored. 10 # The format is: 21 # that follow. The default is UTF-8 which is also the encoding used for all text 25 # The default value is: UTF-8. 29 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded by 31 # project for which the documentation is generated. This name is used in the 33 # The default value is: My Project. 39 # control system is used. [all …]
|
D | glossary.md | 6 development of compilers and interpreters is confusing in some cases. This document describes what 12 compilation" are used to indicate that the source code or bytecode is compiled before actual 13 execution. In case of Panda Runtime, AOT compilation is used to compile Panda Bytecode into 17 * **Compiler** is a tool that performs source code or bytecode translation, optimization and 19 * **IR** stands for **Intermediate Representation**. IR is an internal compiler data structure 25 compilation" are used to indicate that the source code or bytecode is compiled during program 26 execution. In case of Panda Runtime, JIT compilation is used to compile Panda Bytecode into 29 * **Panda Assembler** is a tool that translates **Panda Assembly Language** 31 * **Panda Assembly Language** is a low-level programming language retaining very strong 34 * **Panda Binary File** or **Panda File** or **PF** is a binary representation of Panda Bytecode. [all …]
|
D | code_metainfo.md | 5 Metainfo is an information that aims to provide reg-to-stack mapping for virtual registers. It is n… 10 we call the runtime, we can save information in which stack slot specific vreg is live. 12 Metainfo is placed together with compiled code: 42 Columns width is in a bits. 44 First row is a BitTable's header, that describe rows count and columns width. 51 Header is followed by data, which is a rows with fixed length. Row length is equal to sum of column… 70 Here, we have 4 columns and 5 rows. Number of rows is defeined in the first digit in a header, 71 number of columns is determined in compile time. 73 Row size is 25 bits, that is sum of columns width: 2 + 0 + 15 + 8. 74 Column width is determined by maximum value in a table, e.g. for 2th column it is zero row, that ha… [all …]
|
D | on-stack-replacement.md | 5 On-Stack Replacement (OSR) is a technique for switching between different implementations of the sa… 47 Both, OSR and regular compilation use the same hotness counter. First time, when counter is overflo… 48 whether method is already compiled or not. If not, we start compilation in regular mode. Otherwise,… 51 Once compilation is triggered and OSR compiled code is already set, we begin On-Stack Replacement p… 62 In OSR-methods special osr-entry flag is added to the loop-header basic blocks and some optimizatio… 68 New pseudo-instruction is introduced: SaveStateOsr - instruction should be the first one in each lo… 71 …cial OsrStackMap for each SaveStateOsr instruction. Difference from regular stackmap is that it has 81 No code is generated in place of OsrSaveState, but a special OsrEntryStub entity is created, 82 which is necessary to generate an OSR entry code. 86 2. encodes jump instruction to the head of the loop where the corresponding OsrSaveState is located [all …]
|
D | runtime-debug-api.md | 9 …n't patch apps' bytecode on the fly. Instead of it notification about changing bytecode pc is used. 11 1. Runtime and debugger work in the same process. Debugger functionality is provided via shared lib… 17 …specially on microcontrollers) they are work in the same process. Debugger is loaded as shared lib… 21 …_agent.h) is loaded, which usually represents a debugger shared library. It is created by the VM (… 23 …is disabled, and the [`tooling::Debugger`](../runtime/tooling/debugger.h) object that implements [… 26 * `LoadModule` - occurs when panda file is loaded by the runtime 27 * `BytecodePcChanged` - occurs when bytecode pc is changed during interpretation (only if runtime w…
|
D | design-of-interpreter.md | 40 1. Bytecode is register-based: all arguments and variables are mapped to virtual registers, 42 1. There is a dedicated register called accumulator, which is addressed implicitly by some 44 1. Bytecode's instruction set architecture is machine-readable with a dedicated API for 51 Rationale on the machine-readable instruction set architecture is following. Since bytecode 52 is the main form of program representation, information about it is needed in many components of 54 a bunch of C/C++ headers is very fragile and error-prone. At the same time, 58 * Converter from bytecode to the compiler's intermediate representation is partially implemented 86 in the offset. Additionally, 4-byte alignment is enforced for the most of data structures for 99 Our aim is to address these issues by having a single file for application code. This, however, 127 1. Interpreter is stackless (from the host stack perspective): Whenever a call from managed code [all …]
|
D | ir_format.md | 12 In the development process, it is very important to have auxiliary functionality for various code t… 13 Also in the compilation process, the order of execution of optimizations and analyses is very impor… 51 !NOTE It is possible to write other optimizations based on the specifics of the language and VM 76 The main target is ARM64. So Panda IR should be able to do arm specific optimizations. For this, ne… 81 In the first step, Panda bytecode is converted to high level instruction and architecturally indepe… 86 Overhead is the time that requires for compile. 87 Typically, an overhead is considered to be the average number of 'native' instructions(ARM) that ar… 90 In Ahead-Of-Time(AOT) mode the overhead is less critical for us, so we can do more optimizations. 93 The goal is overhead about 100000 native instructions per guest (standard for JIT compilers) 106 1. It is more common in compilers and easier to understand [all …]
|
D | debugger-vscode-communication.md | 2 Server is an application that accepts commands through the socket and executes them in debugger 6 `--debugger-library-path` is an optional parameter 19 * We create a test client every 100 milliseconds to check is socket ready for a debug session 20 * When the connection is established (if it is at the allocated time) test client disconnects and r…
|
/arkcompiler/runtime_core/compiler/docs/ |
D | reg_alloc_graph_coloring_doc.md | 17 This paper describes register allocation algorithm that is based on ideas of Chordal-graph coloring… 18 …is described in works of Sebastian Hack and Fernando Pereira. It is based on observation that prog… 19 …hs") to construct PEO is used Max Cardinality Search (MCS) algorithm. In this implementation was u… 23 …is built by liveness-intervals, algorithm under the hood is the same as in Linear-scan from works … 26 If interval is pre-colored, this value is set as pre-color for node. And input parameters is marked… 27 Here additionally to the built graph with regular edges that represent interference, it is built af… 31 … MCS or LexBFS (that is reverse PEO), one by one is colored by a Greedy coloring algorithm. Greedy… 36 There are two classes of approaches for coalescing, that is: 37 …is known to potentially can increase register pressure, and make graph G’ not K-colorable as origi… 38 …is a way when in front of coloring nodes are “hinted” with preferred colors. And on stage of color… [all …]
|
D | interface_inline_cache.md | 4 `Interface Inline Cache` is an optimization for speeding up find method in interface method call. 11 * There is a 90% - 95% chance that the same method will be used in real-world application test. 12 * The speed of querying the itable table is very slow. 16 * `Fast Path`: Check whether the class is the same as the last cached class,if equal: use cache; i… 47 1. one cache is 64bit 49 3. cache's address is in an file's aot_got section 52 because read and write 64bit is atomic, same `cache` maybe use at same time 55 1. `class addr` is just the point to a class, in ark runtime, class point is 32bit 56 2. because `class address` is no move in ark, so we do not need to worry that the saved class will … 57 3. if class address is move, it is still save, but maybe the hit rate will be lower. [all …]
|
D | plt.md | 7 JIT/AOT compiler has a `SlowPath` mechanism. It is used for some opcodes where a call to runtime is… 9 During code generation so-called `SlowPath` code is created, and we put it into a special cold code… 10 Unique `SlowPath` blob is generated for each place it is called, and as it contains saving register… 11 `BoundaryFrame` for stack walker, it's code is much longer than few runtime-call-related instructio… 17 The problem is that such a `SlowPath` would be actually required only once when we first time reach… 18 …Id`. So, in order to reduce code size in AOT mode, more tricky solution with PLT Resolvers is used. 23 consecutive slots are reserved in PLT-GOT table. `FirstSlot` is filled during AOT file creation and… 24 `SecondSlot` is filled during AOT file loading into runtime and contains `PLT CallStatic Resolver` … 25 …ould actually store `Method pointer` after resolving, but during AOT file loading it is initialized 28 During calls, first parameter is always a callee `Method pointer`, so the trick from previous parag… [all …]
|
D | deoptimize_elimination_doc.md | 17 If `SaveStateDeoptimize` didn't have users, this instruction is replaced by `NOP`. 20 If input of `DeoptimizeIf` is constant: 21 * Constant is equal 0 -> `DeoptimizeIf` is replaced by `NOP`. 22 * Other constant -> `DeoptimizeIf` is replaced by `Deoptimize` instruction. 25 If input is `IsMustDeoptimize`: 27 …We can remove guard (`IsMustDeoptimize` + `DeoptimizeIf`), if guard is met in all ways and there … 29 For another inputs, algorithm try to replaced by `NOP` all `DeoptimizeIf` instruction which is domi…
|
D | aot_resolve_string.md | 5 loads a value from a slot associated with a string and checks if that value is valid pointer. If it… 17 - `--compiler-aot-load-string-plt` option should be turned on (it is on by default). 19 If the condition is met then the compiler reserves a unique PLT-slot (with type `STRING_SLOT`) for … 20 emits load from that slot, followed by the check that the loaded value is a valid pointer and the s… 37 - if PLT-slot's value is already a pointer then the resolved string gets returned; 38 - if amount of already filled PLT-slots is above `--resolve-string-aot-threshold` then the resolved… 40 - if PLT-slot's value is below `--aot-string-gc-roots-limit` then slot's value is incremented and t… 42 - if PLT-slot's value is above `--aot-string-gc-roots-limit` then slot's value is replaced by strin… 43 registered as GC-root in `AotManager` and the resolved string is returned. 49 `AotManager` is responsible for storing PLT-slots containing references. It also provides methods t… [all …]
|
D | ir_builder.md | 7 Panda compiler's IR employs SSA form, which should be constructed before first pass is run. 9 There are various algorithms to construct SSA form, most known is a Cytron et al. It produce most c… 13 We choose a simple algorithm, that is used in many Virtual Machines. It may produce dead phis, but … 16 …he Panda bytecode, IR builder has responsibility to handle various situation that is not common for 20 - constant hasn't type as well and if one constant is used in integer and float operations, it must… 22 - if constant is `0` and it is used in instruction that expects object(f.e. `mov.obj`), we need to … 51 2. If basic block is a loop header, create SafePoint and OsrSaveState instructions. 58 6. If instruction is a terminator, goto 1, else goto 4. 60 `Virtual register map` is a map, where key is virtual register, value is an IR instruction that cur… 71 …- Check all instructions that have no type and fix it. Type is got from instructions with known in… [all …]
|
/arkcompiler/runtime_core/docs/bc_verification/ |
D | types_n_values.md | 16 Each parameter is a some type accompanied with a variance flag. 18 Variance of the parameter is classic: covariant, contrvariant, invariant. 24 - Sorts are denoted by some `Literals`. Where `Literal` is a word composed of characters from set `… 32 Subtyping relation is denoted by `<:`. Subtyping is a realtion on types which is used to determine … 33 value of the particular type may be used in the place where other type is expected. 35 If two types, say `A()` and `B()` related as `A() <: B()`, i.e. `A()` is the subtype of `B()`, then… 36 place, where a value of type `B()` is expected, value of type `A()` may be safely used. 38 By default, it is considered, that a type is in subtyping relation with itself, i.e. 49 In short `|` means composition of types (syntactically) in set, and `<:` is distriuted over `|`. 55 May be relation is `T(+i16()) <: T(+i8())`? Let's see, according to `+` (covariance), relation of t… [all …]
|
D | type_system.md | 3 Type system is simple: there are only parametric type families, named as `Sort`s, and their instanc… 9 - Bot() - subtype of all types, subtyping relation is made implicitly upon type creation. 10 - Top() - supertype of all types, subtyping rel is created implicitly. 14 Internally they denoted by indices (just numbers), and there is separate class to hold their names. 29 - `+` covariant, means that suptyping relation of parameter is in direction of subtyping relation o… 30 - `-` contrvariant, direction of suptyping of parameter is in opposite to such of type. 57 After defining base types and initial subtyping realtion, a closure of subtyping relation is comput…
|
/arkcompiler/runtime_core/libpandabase/ |
D | README.md | 7 pandargs is header-only utility tool that helps to parse command line arguments. It supports severa… 17 The more detail description of each type is in "Usage" section below. 30 To create an argument, it's template constructor should be called. Here is an instance: 45 There is description for them: 46 - Argument name, is a name, which will appear in a command line. 47 - Default value is a value argument will have regardless was it parsed or not. 49 - Delimiter is a character or string that separates the different value if the single argument list 50 - Min value is the number that the integer argument cannot be less than 51 - Max value is the number that the integer argument cannot be greater than 55 Template parameter is an argument type. Following values could be passed: [all …]
|
/arkcompiler/ets_frontend/es2panda/test/parser/concurrent/ |
D | using-mutable-lexical-variable-5-expected.txt | 1 Error: Concurrent function should only use import variable or local variable, 'a' is not one of the… 2 the size of programs is expected to be 1, but is 0
|
D | using-mutable-lexical-variable-2-expected.txt | 1 Error: Concurrent function should only use import variable or local variable, 'a' is not one of the… 2 the size of programs is expected to be 1, but is 0
|
D | using-mutable-lexical-variable-4-expected.txt | 1 Error: Concurrent function should only use import variable or local variable, 'a' is not one of the… 2 the size of programs is expected to be 1, but is 0
|
D | using-mutable-lexical-variable-3-expected.txt | 1 Error: Concurrent function should only use import variable or local variable, 'a' is not one of the… 2 the size of programs is expected to be 1, but is 0
|
D | using-mutable-lexical-variable-1-expected.txt | 1 Error: Concurrent function should only use import variable or local variable, 'a' is not one of the… 2 the size of programs is expected to be 1, but is 0
|
D | using-const-lexical-variable-4-expected.txt | 1 Error: Concurrent function should only use import variable or local variable, 'a' is not one of the… 2 the size of programs is expected to be 1, but is 0
|
/arkcompiler/ets_frontend/es2panda/test/hotreload/hotreload-throwerror/modify-class-1/ |
D | expected.txt | 9 # distributed under the License is distributed on an "AS IS" BASIS, 14 …ted! If .Model is not changed and you are changing UI Component, please only change one Component … 17 the size of programs is expected to be 1, but is 0
|
/arkcompiler/runtime_core/docs/diagrams/ |
D | gc-thread-activity.puactivity | 9 ' distributed under the License is distributed on an "AS IS" BASIS, 25 if (task is Full GC) then (yes) 27 elseif (task is Major GC) then (yes) 29 while (Major GC is not completed) is (yes)
|