| /arkcompiler/ets_runtime/common_components/heap/barrier/ |
| D | barrier.cpp | 16 #include "common_components/heap/barrier/barrier.h" 28 void Barrier::WriteRefField(BaseObject* obj, RefField<false>& field, BaseObject* ref) const in WriteRefField() 30 DLOG(BARRIER, "write obj %p ref-field@%p: %p => %p", obj, &field, field.GetTargetObject(), ref); in WriteRefField() 34 void Barrier::WriteBarrier(BaseObject* obj, RefField<false>& field, BaseObject* ref) const in WriteBarrier() 36 DLOG(BARRIER, "write obj %p ref-field@%p: %p => %p", obj, &field, field.GetTargetObject(), ref); in WriteBarrier() 39 void Barrier::WriteRoot(BaseObject *obj) const in WriteRoot() 41 DLOG(BARRIER, "write root obj %p", obj); in WriteRoot() 44 void Barrier::WriteStruct(BaseObject* obj, HeapAddress dst, size_t dstLen, HeapAddress src, size_t … in WriteStruct() 55 void Barrier::WriteStaticRef(RefField<false>& field, BaseObject* ref) const in WriteStaticRef() 57 DLOG(BARRIER, "write (barrier) static ref@%p: %p", &field, ref); in WriteStaticRef() [all …]
|
| D | barrier.h | 25 // Barrier is the base class to define read/write barriers. 26 class Barrier { 29 explicit Barrier(Collector& collector) : theCollector(collector) {} in Barrier() function 30 virtual ~Barrier() {} in ~Barrier()
|
| /arkcompiler/ets_runtime/ecmascript/tests/ |
| D | unified_gc_multi_vm_test.cpp | 49 UnifiedGCMultiVMTestSuite(void *stsIface, SuspendBarrier *barrier) in UnifiedGCMultiVMTestSuite() argument 50 : stsVMInterface(stsIface), suspendBarrier(barrier) {} in UnifiedGCMultiVMTestSuite() 203 …teEcmaVM. So switch the current jsThread to IS_SUSPENDED state to pass the SuspendAll barrier until in Init() 227 SuspendBarrier barrier(INT_VALUE_4); in HWTEST_F_L0() local 231 UnifiedGCMultiVMTestSuite testVM1(stsVMInterface.get(), &barrier); in HWTEST_F_L0() 232 UnifiedGCMultiVMTestSuite testVM2(stsVMInterface.get(), &barrier); in HWTEST_F_L0() 233 UnifiedGCMultiVMTestSuite testVM3(stsVMInterface.get(), &barrier); in HWTEST_F_L0() 239 barrier.PassStrongly(); in HWTEST_F_L0() 240 barrier.Wait(); in HWTEST_F_L0() 255 SuspendBarrier barrier(INT_VALUE_4); in HWTEST_F_L0() local [all …]
|
| /arkcompiler/runtime_core/static_core/plugins/ets/tests/interop_js/tests/sts_vm_interface_impl_tests/ |
| D | sts_vm_interface_impl_tests.cpp | 96 VMBarrier barrier(BARRIER_USERS_COUNT); in TEST_F() local 98 auto barrierTestFunc = [&barrier, &threadInPhaseCounter] { in TEST_F() 99 barrier.InitialWait(); in TEST_F() 102 // count should be less then BARRIER_USERS_COUNT, otherwise barrier is broken in TEST_F() 107 barrier.Wait(); in TEST_F() 118 VMBarrier barrier(BARRIER_USERS_COUNT + 1U); in TEST_F() local 124 auto barrierTestFunc = [&barrier, &queue, &goExecute] { in TEST_F() 125 barrier.InitialWait(); in TEST_F() 126 while (!barrier.Wait([&goExecute, &queue]() { return !goExecute || queue.Size() == 0U; })) { in TEST_F() 135 barrier.InitialWait(); in TEST_F() [all …]
|
| /arkcompiler/ets_runtime/common_components/heap/barrier/tests/ |
| D | barrier_test.cpp | 18 #include "common_components/heap/barrier/barrier.h" 100 Barrier barrier{collector}; member in BarrierTest 113 BaseObject* result = barrier.ReadRefField(nullptr, field); in HWTEST_F_L0() 122 barrier.WriteRefField(nullptr, field, newRef); in HWTEST_F_L0() 131 barrier.WriteStaticRef(field, newRef); in HWTEST_F_L0() 140 barrier.AtomicWriteRefField(nullptr, field, newRef, std::memory_order_relaxed); in HWTEST_F_L0() 150 bool result = barrier.CompareAndSwapRefField(nullptr, field, oldRef, newRef, in HWTEST_F_L0() 166 barrier.WriteStruct(nullptr, reinterpret_cast<HeapAddress>(dstBuffer), dstBufferSize, in HWTEST_F_L0() 183 BaseObject* result = barrier.ReadStaticRef(field); in HWTEST_F_L0() 191 …BaseObject* oldValue = barrier.AtomicSwapRefField(nullptr, field, newRef, std::memory_order_seq_cs… in HWTEST_F_L0() [all …]
|
| /arkcompiler/runtime_core/libabckit/src/ |
| D | abckit_compiler_intrinsics.yaml | 46 clear_flags: [ "require_state", "call", "heap_inv", "acc_read", "no_dce", "barrier" ] 66 clear_flags: [ "require_state", "call", "heap_inv", "acc_write", "barrier" ] 86 …clear_flags: [ "require_state", "call", "heap_inv", "barrier", "can_throw", "no_dce", "no_hoist", … 126 clear_flags: [ "require_state", "call", "heap_inv", "barrier", "acc_read", "acc_write" ] 146 clear_flags: [ "require_state", "call", "heap_inv", "barrier", "acc_read", "acc_write" ] 166 clear_flags: [ "require_state", "call", "heap_inv", "barrier", "acc_read"] 186 clear_flags: [ "require_state", "call", "heap_inv", "barrier", "acc_read"] 206 clear_flags: [ "require_state", "call", "heap_inv", "barrier", "acc_read"] 226 … "can_throw", "no_dce", "require_state", "call", "runtime_call", "heap_inv", "barrier", "acc_read"] 246 … "can_throw", "no_dce", "require_state", "call", "runtime_call", "heap_inv", "barrier", "acc_read"] [all …]
|
| /arkcompiler/runtime_core/libpandabase/mem/ |
| D | gc_barrier.h | 29 * Represents Pre and Post barrier 37 * Indicates if barrier for store or load 45 constexpr uint8_t BARRIER_POS_OFFSET = 0U; // offset in bits for encoding position of barrier… 57 * Should help to encode barrier for the compiler. 58 * PreWrite barrier can be used for avoiding lost object problem. 59 * PostWrite barrier used for tracking intergenerational or interregion references 67 * Pre barrier for SATB. 76 * store obj.field <- new_val // STORE for which barrier generated 84 …* Post barrier. Intergenerational barrier for GCs with explicit continuous young gen space. Uncond… 87 * store obj.field <- new_val // STORE for which barrier generated [all …]
|
| /arkcompiler/runtime_core/static_core/libpandabase/mem/ |
| D | gc_barrier.h | 28 /// Represents Pre and Post barrier 34 /// Indicates if barrier for store or load 41 constexpr uint8_t BARRIER_POS_OFFSET = 0U; // offset in bits for encoding position of barrier… 53 * Should help to encode barrier for the compiler. 54 * PreWrite barrier can be used for avoiding lost object problem. 55 * PostWrite barrier used for tracking intergenerational or interregion references 63 * Pre barrier for SATB. 72 * store obj.field <- new_val // STORE for which barrier generated 81 …* Post barrier. Intergenerational barrier for GCs with explicit continuous young gen space. Uncond… 84 * store obj.field <- new_val // STORE for which barrier generated [all …]
|
| /arkcompiler/runtime_core/static_core/runtime/mem/gc/ |
| D | gc_barrier_set.h | 26 /// Base barrier set 60 * Pre barrier. Used by interpreter. 66 * Post barrier. Used by interpeter. 74 * Post barrier for range write. Used by interpeter. 82 … * Get barrier operand (literal, function pointer, address etc. See enum BarrierType for details. 83 * Should be used for barrier generation in Compiler. 85 * @return barrier operand (value is address or literal) 93 * Add barrier operand if there are no operands with this name 94 * @param barrier_position - pre or post position of barrier with added operand 111 BarrierType preType_; // Type of PRE barrier. [all …]
|
| D | gc_barrier_set.cpp | 76 LOG(FATAL, GC) << "Operand " << name << " not found for pre barrier"; in GetBarrierOperand() 81 LOG(FATAL, GC) << "Operand " << name << " not found for post barrier"; in GetBarrierOperand() 141 // StoreLoad barrier is required to guarantee order of previous reference store and card load in PostBarrier() 147 … LOG(DEBUG, GC) << "GC Interregion barrier write to " << objAddr << " value " << storedValAddr; in PostBarrier() 158 // Force post inter-region barrier in PostBarrier() 166 // StoreLoad barrier is required to guarantee order of previous reference store and card load in PostBarrier() 177 …LOG(DEBUG, GC) << "GC Interregion barrier write for memory range from " << cardTable_->GetCardSta… in Invalidate() 201 ASSERT(thread->GetPreBuff() != nullptr); // write barrier cant be called after Terminate in Enqueue()
|
| /arkcompiler/ets_runtime/common_components/heap/ark_collector/ |
| D | idle_barrier.h | 19 #include "common_components/heap/barrier/barrier.h" 22 // IdleBarrier is the barrier for concurrent enum phase 23 class IdleBarrier : public Barrier { 25 explicit IdleBarrier(Collector& collector) : Barrier(collector) {} in IdleBarrier()
|
| D | idle_barrier.cpp | 36 …DLOG(BARRIER, "atomic read obj %p ref@%p: %#zx -> %p", obj, &field, oldField.GetFieldValue(), targ… in AtomicReadRefField() 50 …DLOG(BARRIER, "atomic write obj %p<%p>(%zu) ref@%p: %p", obj, obj->GetTypeInfo(), obj->GetSize(), … in AtomicWriteRefField() 53 DLOG(BARRIER, "atomic write static ref@%p: %p", &field, newRef); in AtomicWriteRefField() 65 …DLOG(BARRIER, "atomic swap obj %p<%p>(%zu) ref@%p: old %#zx(%p), new %#zx(%p)", obj, obj->GetTypeI… in AtomicSwapRefField() 99 DLOG(BARRIER, "update point-out remember set of region %p, obj %p, ref: %p<%p>", in UpdateRememberSet() 107 DLOG(BARRIER, "write root obj %p", obj); in WriteRoot() 112 DLOG(BARRIER, "write obj %p ref@%p: %p => %p", obj, &field, field.GetTargetObject(), ref); in WriteRefField() 125 DLOG(BARRIER, "write obj %p ref@%p: %p => %p", obj, &field, field.GetTargetObject(), ref); in WriteBarrier()
|
| /arkcompiler/runtime_core/static_core/compiler/optimizer/ir/ |
| D | instructions.yaml | 113 flags: [no_dce, no_hoist, no_cse, barrier, acc_read, require_state, can_deoptimize] 313 …flags: [can_throw, no_dce, no_hoist, no_cse, barrier, alloc, require_state, runtime_call, acc_writ… 463 …flags: [store, can_throw, no_dce, no_hoist, no_cse, barrier, require_state, runtime_call, implicit… 499 flags: [load, can_throw, no_hoist, no_dce, no_cse, require_state, barrier, runtime_call] 517 …flags: [store, no_hoist, no_dce, no_cse, no_dst, require_state, barrier, runtime_call, require_tmp] 529 flags: [load, can_throw, no_dce, no_hoist, barrier, no_cse, require_state, runtime_call] 556 flags: [can_throw, no_hoist, barrier, no_dce, require_state, runtime_call] 564 flags: [can_throw, no_hoist, barrier, no_dce, require_state, runtime_call] 572 flags: [can_throw, no_dce, no_hoist, barrier, require_state, runtime_call] 580 flags: [can_throw, no_dce, no_cse, no_hoist, barrier, require_state, runtime_call] [all …]
|
| /arkcompiler/runtime_core/compiler/ |
| D | intrinsics.yaml | 31 clear_flags: ["no_dce", "no_hoist", "no_cse", "barrier", "require_state", "runtime_call"] 51 clear_flags: ["no_dce", "no_hoist", "no_cse", "barrier", "require_state", "runtime_call"] 71 clear_flags: ["no_dce", "no_hoist", "no_cse", "barrier", "require_state", "runtime_call"] 91 clear_flags: ["no_dce", "no_hoist", "no_cse", "barrier", "require_state", "runtime_call"] 111 clear_flags: ["no_dce", "no_hoist", "no_cse", "barrier", "require_state", "runtime_call"] 131 clear_flags: ["no_dce", "no_hoist", "no_cse", "barrier", "require_state", "runtime_call"] 151 clear_flags: ["no_dce", "no_hoist", "no_cse", "barrier", "require_state", "runtime_call"] 171 clear_flags: ["no_dce", "no_hoist", "no_cse", "barrier", "require_state", "runtime_call"] 191 clear_flags: ["no_dce", "no_hoist", "no_cse", "barrier", "require_state", "runtime_call"] 211 clear_flags: ["no_dce", "no_hoist", "no_cse", "barrier", "require_state", "runtime_call"] [all …]
|
| /arkcompiler/runtime_core/static_core/compiler/docs/ |
| D | scheduler_doc.md | 22 * No liveness analysis, only calculating dependencies using barrier/users/alias information 47 void Scheduler::AddDep(uint32_t* prio, Inst* from, Inst* to, uint32_t latency, Inst* barrier) { 50 // Do not add cross-barrier dependencies into deps_ 51 if (barrier == nullptr || old_[to] > old_[barrier]) { 74 // Dependency to the barrier 77 // Dependency from barrier 78 if (barrier) { 103 bool barrier = inst->IsBarrier(); 107 if (barrier || inst == bb->GetLastInst()) { 109 if (barrier) { [all …]
|
| D | memory_barriers_doc.md | 6 We can remove the barrier if we prove that the created object cannot be passed to another thread be… 25 So we will only set the barrier in the last instruction before potentially passing the created obje… 29 …the instructions NewObject, NewArray and NewMultiArray and encode memory barrier if the flag `true`
|
| /arkcompiler/ets_runtime/ecmascript/base/ |
| D | config.h | 28 DEFAULT_RB = 0, // Default read barrier mode to support both gc. 29 FAST_NO_RB, // Use to old gc read barrier mode. 30 FAST_CMC_RB, // Use to cmc gc read barrier mode. 85 * 6. enable barrier check
|
| /arkcompiler/ets_runtime/test/moduletest/barrier/ |
| D | BUILD.gn | 16 host_moduletest_action("barrier") { 19 entry_point = "--entry-point=barrier"
|
| /arkcompiler/ets_runtime/ecmascript/compiler/codegen/llvm/x64/ |
| D | x64_builder.cpp | 32 // input registers are same with the sign of runtime check barrier stub. in GetASMBarrierCall() 36 // input registers, first is the runtime check barrier stub. in GetASMBarrierCall() 37 // others are same with the sign of runtime check barrier stub. in GetASMBarrierCall() 48 …paramTys.push_back(llvmModule->GetRawPtrT()); // add the runtime check barrier stub as the first a… in GetASMBarrierCall()
|
| /arkcompiler/runtime_core/compiler/optimizer/ir/ |
| D | instructions.yaml | 106 flags: [cf, no_dce, no_hoist, no_cse, barrier, acc_read, terminator] 112 flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call] 141 flags: [cf, no_dce, no_hoist, no_cse, barrier, low_level, acc_read] 147 flags: [cf, no_dce, no_hoist, no_cse, barrier, acc_read] 153 flags: [no_dce, no_hoist, no_cse, barrier] 257 barrier: Instruction is a barrier for scheduling 267 mem_barrier: we need encode memory barrier after the instruction(for return.void before)
|
| /arkcompiler/runtime_core/static_core/docs/diagrams/ |
| D | g1-concurrent-marking-activity.plantuml | 20 :Enable pre-barrier; 25 :Disable pre-barrier;
|
| /arkcompiler/runtime_core/docs/diagrams/ |
| D | g1-concurrent-marking-activity.puactivity | 20 :Enable pre-barrier; 25 :Disable pre-barrier;
|
| /arkcompiler/ets_runtime/ecmascript/compiler/codegen/llvm/aarch64/ |
| D | aarch64_builder.cpp | 32 // input registers are same with the sign of runtime check barrier stub. in GetASMBarrierCall() 36 // input registers, first is the runtime check barrier stub. in GetASMBarrierCall() 37 // others are same with the sign of runtime check barrier stub. in GetASMBarrierCall() 50 …paramTys.push_back(llvmModule->GetRawPtrT()); // add the runtime check barrier stub as the first a… in GetASMBarrierCall()
|
| /arkcompiler/ets_runtime/common_components/heap/ |
| D | heap.h | 25 #include "common_components/heap/barrier/barrier.h" 69 static Barrier& GetBarrier() { return *currentBarrierPtr_->load(std::memory_order_relaxed); } in GetBarrier() 71 // concurrent gc uses barrier to access heap. 203 static std::atomic<Barrier*>* currentBarrierPtr_; // record ptr for fast access 204 static Barrier* stwBarrierPtr_; // record nonGC barrier
|
| /arkcompiler/runtime_core/static_core/compiler/optimizer/optimizations/ |
| D | scheduler.cpp | 29 * 3. No liveness analysis, only calculating dependencies using barrier/users/alias information. 51 void Scheduler::AddDep(uint32_t *prio, Inst *from, Inst *to, uint32_t latency, Inst *barrier) in AddDep() argument 64 // Do not add cross-barrier dependencies into deps_ in AddDep() 65 if (barrier == nullptr || old_[to] > old_[barrier]) { in AddDep() 111 bool barrier = inst->IsBarrier(); in ProcessInst() local 119 // Dependency to the barrier in ProcessInst() 124 // Dependency from barrier in ProcessInst() 125 if (barrier) { in ProcessInst() 285 bool barrier = inst->IsBarrier(); in ScheduleBasicBlock() local 291 if (barrier || inst == bb->GetLastInst()) { in ScheduleBasicBlock() [all …]
|