| /arkcompiler/runtime_core/docs/ |
| D | 2022-08-18-isa-changelog.md | 13 1. We delete all original java specific opcodes and delete java specific opcode prefix. 14 2. We remove the prefix of ecmascript specific opcodes, such that most of the bytecode opcode can b… 15 …We add prefix "deprecated" and keep the many old isa as "deprecated"-prefixed opcodes (for compati… 16 4. We add prefix "throw" and make all throwing opcodes be prefixed by "throw". 17 5. We add prefix "wide" to support opcodes which need larger immediate number. 18 6. We adjust the format of some opcodes (about immediate number and accumulator), so that the bytec… 19 7. We change the semantics of some opcodes. 20 8. We add 8-bit or 16-bit imm as inline cache slot for some specific opcodes. 23 As we merge some "define-function" opcodes as one opcode, in function we add one field which record… 25 We also add header index in function such that runtime can access IndexHeader more efficiently. [all …]
|
| D | cfi_directives.md | 24 In prolog we save `lr`, `fp` and `callee` regs on stack. 25 So we should explicitly mark these stack slots with help of `CFI` directives. 30 In epilog we read saved `callees` from stack and also `fp`/`lr`. Here we annotate that saved regist… 41 In that case we "say" to `debugger` that we are not going to return to previous frame. So we direct…
|
| D | on-stack-replacement.md | 7 Under the OSR, we mean the transition from interpreter code to optimized code. Opposite transition … 8 unoptimized - we call `Deoptimization`. 47 …d regular compilation use the same hotness counter. First time, when counter is overflowed we look 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… 61 To ensure all loops in the compiled code may be entered from the interpreter, we need to avoid 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. 98 Since Panda Interpreter is written in the C++ language, we haven't access to its stack. Thus, we ca… 99 interpreter frame by cframe on the stack. When OSR is occurred we call OSR compiled code, and once … [all …]
|
| D | rationale-for-bytecode.md | 30 making interpretation slower than _native code execution_. In return, we get the ability to 76 At the same time, to execute a stack-based addition we need to run 3 instructions compared to 110 With this approach, we are no longer required to encode destination register, it is "hardcoded" to 148 It easy to see that to address virtual registers 4 and 5 we need just 3 bits which allows to encode 158 into 4 bits, we have to use a wider encoding: 165 How to make sure that we benefit from the shorter encoding most of the time? An observation shows 171 Please note also that we don't need "full-range" versions for all instructions. In case some 172 instruction lacks a wide-range form, we can prepare operands for it with moves that have all 173 needed forms. Thus we save on opcode space without losing in encoding size (on average). 175 With such approach, we can carefully introduce various "overloads" for instruction when it could [all …]
|
| D | memory-management.md | 5 Panda Runtime should be scalable onto different devices/OSes. So we need some abstraction level for… 6 For now, all targets suppose interaction with the user, so we have some limitations for the STW pau… 7 We have very limited memory resources for IoT target, so we should maximize efforts on reducing mem… 33 Mode are chosen at the startup time (we'll use profile info from cloud for that). 107 However, we can also support such version of the object header(Hash is stored just after the object… 123 This scenario decreases the size of a Monitor instance, and we don't need to save Hash somewhere du… 125 But, this scenario will be useful if we have allocator and GC which decreases such a situation to a… 152 Heavyweight Lock - we have competition for this object(few threads try to lock this object). 172 If we don't use strings compressing, each string has this structure: 184 If we use strings compressing, each string has this structure: [all …]
|
| D | ir_format.md | 14 …asses, add and delete passes(If 2 passes have a dependency we must take this into account). We sho… 15 Second, we need to support the transfer of information between optimizations. 45 …ations are not obvious or do need profiling information to implement them. We will have them in mi… 55 We will try to make it possible to pass optimizations in an arbitrary order. Some restrictions will… 71 Panda bytecode has more than 200 instructions. We need to convert all Bytecode instructions in IR i… 88 …we do, the more overhead we get. We need to find a balance between performance and the overhead ne… 90 In Ahead-Of-Time(AOT) mode the overhead is less critical for us, so we can do more optimizations. 105 We decided to choose the CFG with SSA form for the following reasons: 125 …* List of predecessors: vector of pointers to the BasicBlocks from which we can get into the curre… 126 …* List of successors: vector of pointers to the BasicBlocks in which we can get from the current b… [all …]
|
| D | memory-management-SW-requirements.md | 37 - Concurrent generational GC (optional - we can disable generational mode) 51 We can use profile to choose MM configuration for application (for example: we can choose non-compa…
|
| D | runtime-class.md | 11 We store common runtime information separately from managed object to give more flexebility for its… 40 …ct from the `coretypes::Class` one and vice versa without dereferencies if we know language contex… 73 In common places where language context can be different we can use `panda::Class::GetManagedObject…
|
| D | coding-style.md | 4 But we have some modifications: 26 10. Always explicitly mark fall through in switch … case. Google uses its own macro, we can agree o… 76 We are using clang-format and clang-tidy to check code style.
|
| D | glossary.md | 5 During the development of Panda Runtime, we faced the fact that terminology related to the 63 Safepoint is used as a point at which we can safely stop the thread, and at this point, all 64 … references on the stack are mapped (i.e., it is known when we have an object on the stack or not). 66 It means that all objects which are currently in use are known and we know how to get value 71 (one is empty and one used for allocation) and we just copy objects from one space to another
|
| D | debugger-vscode-communication.md | 18 * It's critical for VSCode to have a debug server initialized at allocated time so we establish a t… 19 * We create a test client every 100 milliseconds to check is socket ready for a debug session
|
| /arkcompiler/runtime_core/cmake/ |
| D | PandaCmakeFunctions.cmake | 15 # We need use linker scripts for section replacement above 4GB 17 # so we have difference start addresses for asan and default buildings 19 # When using rapidcheck we should use linker scripts with 32 # For cross-aarch64 with ASAN with linker script we need use additional path-link 33 … # Here we use default addresses space (without ASAN flag). It is nuance of cross-building. 40 # We need use specific options for AMD64 building with Clang compiler
|
| D | ClangTidy.cmake | 21 # TODO: Retry once we upgrade the checker. 36 # Currently we fix a certain version of clang-tidy to avoid unstable linting, 53 # Hence we check for ERROR_VARIABLE instead of RESULT_VARIABLE. 66 # definition. We add it to targets on which we run clang-tidy just to 93 # * We use permissive policy for checks, i.e. everything is enabled by default, 95 # * We maintain the list of global exceptions in this function (not in .clang-tidy) 147 "-readability-identifier-naming" # disabled because we will use little-hump-style 149 …"-fuchsia-trailing-return" # disabled because we have a lot of false positives and it is stylisti… 150 …"-fuchsia-default-arguments-calls" # disabled because we use functions with default arguments a lot 151 …"-fuchsia-default-arguments-declarations" # disabled because we use functions with default argumen… [all …]
|
| D | HostTools.cmake | 15 # we need to have the assembler binary. If we are not 16 # cross-compiling, we are good to go. Otherwise a subset 115 …# After CMake 3.15 all targets can be specified in a single `--target` option. But we use CMake 3.…
|
| /arkcompiler/runtime_core/libpandabase/utils/ |
| D | murmur3_hash.h | 32 // Firstly, we proceed each 32 bits block from key; 33 // Secondly, we proceed last 8 bits block which were not covered in previous step. 91 // We start hashing from the seed in MurmurHash3() 103 // Do this because we don't want to dispatch Big/Little endianness. in MurmurHash3() 141 // We start hashing from the seed in MurmurHash3String() 143 // We should still compute length of the string, we will need it later in MurmurHash3String() 161 // We couldn't read four 8bytes value in MurmurHash3String() 164 // Do this because we don't want to dispatch Big/Little endianness. in MurmurHash3String()
|
| /arkcompiler/runtime_core/compiler/docs/ |
| D | vn_doc.md | 6 At the case we move users from second instruction to first instructions(first instruction is domina… 19 We pass through all instructions in PRO order. If the instruction has attribute NO_Cse, we set next… 20 For other instructions we save information: opcode, type, `vn` of instruction inputs, advanced prop… 21 Based on the collected information, we are looking for a equivalent instructions in the hash map. 24 …a. If some equivalent instruction dominates current instruction, we move users from current instru… 25 …b. If all equivalent instructions do not dominate current instruction, we insert the instruction i… 26 2. If equivalent instructions weren't found, we set next `vn` to the current instruction field and …
|
| D | plt.md | 9 During code generation so-called `SlowPath` code is created, and we put it into a special cold code… 16 `SlowPath` also can be used, as we can cache gathered Method or Class pointer into a slot in GOT ta… 17 The problem is that such a `SlowPath` would be actually required only once when we first time reach… 60 When we have `Method pointer`, it is stored into `ThirdSlot`, allow to load proper executable addre… 172 For `arm64` we use `LR` register (`x30`), and for `x86_64` third `Encoder` temporary - `r14` is use… 181 on stack, so we load it into temporary (we need it for `BoundaryFrame`), and push `rbp` to the stac… 189 In CallStatic resolver we prepare place on the stack and save registers there. In three other Resol… 192 Moreover, for `arm64` we manually add `x16` to live registers set. 217 Registers are loaded in the same manner they were saved. So, in CallStatic we have to adjust stack …
|
| D | interface_inline_cache.md | 56 2. because `class address` is no move in ark, so we do not need to worry that the saved class will … 65 if we want to save ClassA.method_n* 74 we just need to save method_1* - method_n* 95 we still save ClassA.method_1* - ClassB.method_n*, so if 100 because Method* is 8bit align, so Method* can be compressed. So the actual range we can store is:
|
| D | cleanup_doc.md | 27 …etween same blocks, but our way to store CFG edges don't support that. So, we have to insert an em… 47 Instructions, which we can't remove from Graph, has the attribute `NO_DCE` 52 …dant `Phi` instructions are removed - in short, if `phi` has only one real input, we can move users 58 instructions and is not an loop pre-header we still have to check each predecessor block for "speci… 65 During first pass through all instructions (in PRO order) we mark `live` all instructions which hav… 67 During second pass we remove all not `live`-marked instructions. 77 Finally, we visits basic blocks once again, and if: 82 Then we can join the block with the successor block. After that, the new block tries to join next b…
|
| /arkcompiler/runtime_core/libpandabase/mem/ |
| D | mmap_mem_pool.h | 110 * To check if we can alloc enough pools from free pools 111 * @param pools_num the number of pools we need 112 * @param pool_size the size of the pool we need 113 … * @return true if we can make sure that we have enough space in free pools to alloc pools we need 168 // To check if we can alloc enough pools in object space
|
| /arkcompiler/runtime_core/libpandabase/tests/ |
| D | hash_test.cpp | 138 // If we hash an object twice, it must return the same value 145 // If we hash a string twice, it must return the same value 151 // If we hash a string with out string method, 152 // we should get the same result as we use a pointer to string as a raw memory. 159 // Check that we will not have SEGERROR here.
|
| /arkcompiler/runtime_core/cmake/ark-third-party/zlib/ |
| D | CMakeLists.txt | 28 # Check to see if we have large file support 31 # We add these other definitions here because CheckTypeSize.cmake 32 # in CMake 2.4.x does not automatically do so and we want 70 # If we're doing an out of source build and the user has a zconf.h 187 # NB! We always build zlib statically, but there seems 188 # no obvious reasons for that. If we reconsider, the logic
|
| /arkcompiler/runtime_core/platforms/unix/libpandabase/futex/ |
| D | fmutex.cpp | 35 // are not finished and they have state IS_BLOCKED). In this case we should terminate 123 // Return true if the predicate test succeeded, false if we timed out. 126 // We probably don't want to do syscall (switch context) when we use WaitBrieflyFor in WaitBrieflyFor() 153 // We can ignore these checks on devices because we use zygote and do not destroy runtime. in MutexDestroy() 286 // If we had waiters, we need to do futex call in MutexUnlock()
|
| /arkcompiler/ets_frontend/arkguard/test/grammar/class_validation/ |
| D | class_abstract.ts | 37 return 'We meet as 10am!'; 49 assert(department.getMeeting() === 'We meet as 10am!', 'success');
|
| /arkcompiler/toolchain/build/config/aosp/ |
| D | config.gni | 31 # we can decide if we have to pull in definitions from the internal config 83 # Location of libgcc. This is only needed for the current GN toolchain, so we
|