Home
last modified time | relevance | path

Searched full:barrier (Results 1 – 25 of 157) sorted by relevance

1234567

/arkcompiler/ets_runtime/common_components/heap/barrier/
Dbarrier.cpp16 #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 …]
Dbarrier.h25 // 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/
Dunified_gc_multi_vm_test.cpp49 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/
Dsts_vm_interface_impl_tests.cpp96 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/
Dbarrier_test.cpp18 #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/
Dabckit_compiler_intrinsics.yaml46 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/
Dgc_barrier.h29 * 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/
Dgc_barrier.h28 /// 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/
Dgc_barrier_set.h26 /// 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 …]
Dgc_barrier_set.cpp76 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/
Didle_barrier.h19 #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()
Didle_barrier.cpp36 …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/
Dinstructions.yaml113 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/
Dintrinsics.yaml31 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/
Dscheduler_doc.md22 * 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 …]
Dmemory_barriers_doc.md6 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/
Dconfig.h28 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/
DBUILD.gn16 host_moduletest_action("barrier") {
19 entry_point = "--entry-point=barrier"
/arkcompiler/ets_runtime/ecmascript/compiler/codegen/llvm/x64/
Dx64_builder.cpp32 // 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/
Dinstructions.yaml106 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/
Dg1-concurrent-marking-activity.plantuml20 :Enable pre-barrier;
25 :Disable pre-barrier;
/arkcompiler/runtime_core/docs/diagrams/
Dg1-concurrent-marking-activity.puactivity20 :Enable pre-barrier;
25 :Disable pre-barrier;
/arkcompiler/ets_runtime/ecmascript/compiler/codegen/llvm/aarch64/
Daarch64_builder.cpp32 // 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/
Dheap.h25 #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/
Dscheduler.cpp29 * 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 …]

1234567