Home
last modified time | relevance | path

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

12

/arkcompiler/runtime_core/runtime/
Druntime.yaml46 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call]
58 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call]
70 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call]
82 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call]
93 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call]
104 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call]
115 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call]
126 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call]
137 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call]
148 clear_flags: [no_dce, no_hoist, no_cse, barrier, require_state, runtime_call]
[all …]
Dthread.cpp91 void Thread::InitCardTableData(mem::GCBarrierSet *barrier) in InitCardTableData() argument
93 auto post_barrier_type = barrier->GetPostType(); in InitCardTableData()
96 … card_table_min_addr_ = std::get<void *>(barrier->GetPostBarrierOperand("MIN_ADDR").GetValue()); in InitCardTableData()
97 …card_table_addr_ = std::get<uint8_t *>(barrier->GetPostBarrierOperand("CARD_TABLE_ADDR").GetValue(… in InitCardTableData()
100 …card_table_addr_ = std::get<uint8_t *>(barrier->GetPostBarrierOperand("CARD_TABLE_ADDR").GetValue(… in InitCardTableData()
101 … card_table_min_addr_ = std::get<void *>(barrier->GetPostBarrierOperand("MIN_ADDR").GetValue()); in InitCardTableData()
110 LOG(FATAL, RUNTIME) << "Post barrier expected"; in InitCardTableData()
119 auto barrier = gc->GetBarrierSet(); in InitPreBuff() local
120 if (barrier->GetPreType() != panda::mem::BarrierType::PRE_WRB_NONE) { in InitPreBuff()
239 auto barrier = gc->GetBarrierSet(); in InitBuffers() local
[all …]
Dobject_header.cpp198 // We don't need pre barrier here because we don't change any links inside main object in ShallowCopy()
199 // Post barrier in ShallowCopy()
/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/runtime/mem/gc/
Dgc_barrier_set.h27 * Base barrier set
62 * Pre barrier. Used by interpreter.
68 * Post barrier. Used by interpeter.
75 * Post barrier for array write. Used by interpeter.
82 * Post barrier for writing in every field of an object. Used by interpeter.
89 … * Get barrier operand (literal, function pointer, address etc. See enum BarrierType for details.
90 * Should be used for barrier generation in Compiler.
92 * @return barrier operand (value is address or literal)
100 * Add barrier operand if there are no operands with this name
101 * @param barrier_position - pre or post position of barrier with added operand
[all …]
Dgc_barrier_set.cpp80 … LOG(DEBUG, GC) << "GC Interregion barrier write to " << std::hex << obj_addr << " value " << ref; in PostInterregionBarrier()
91 LOG(FATAL, GC) << "Operand " << name << " not found for pre barrier"; in GetBarrierOperand()
96 LOG(FATAL, GC) << "Operand " << name << " not found for post barrier"; in GetBarrierOperand()
155 // Force post inter-region barrier in PostBarrierArrayWrite()
163 // Force post inter-region barrier in PostBarrierEveryObjectFieldWrite()
/arkcompiler/runtime_core/compiler/optimizer/ir/
Dinstructions.yaml332 …flags: [load, can_throw, no_dce, no_cse, no_hoist, barrier, require_state, runtime_call, implicit_…
349 …flags: [store, can_throw, no_dce, no_cse, no_hoist, barrier, require_state, runtime_call, implicit…
366 …flags: [load, can_throw, no_dce, no_hoist, no_cse, barrier, require_state, runtime_call, implicit_…
383 …flags: [store, can_throw, no_dce, no_hoist, no_cse, barrier, require_state, runtime_call, implicit…
404 flags: [load, can_throw, no_hoist, no_dce, no_cse, require_state, barrier, runtime_call]
410 flags: [store, no_hoist, no_dce, no_cse, no_dst, require_state, barrier, runtime_call]
422 …flags: [load, can_throw, no_dce, no_hoist, barrier, no_cse, require_state, runtime_call, implicit_…
449 flags: [can_throw, no_hoist, barrier, no_dce, require_state, runtime_call]
457 flags: [can_throw, no_hoist, barrier, no_dce, require_state, runtime_call]
465 flags: [can_throw, no_dce, no_hoist, barrier, require_state, runtime_call]
[all …]
/arkcompiler/runtime_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`
Dmemory_coalescing_doc.md61 …* all candidates are invalid if a barrier is met: calls, control flow instructions, monitors, exce…
67 1) If the instruction is a barrier – invalidate all candidates.
/arkcompiler/runtime_core/compiler/optimizer/optimizations/
Dscheduler.cpp28 * 3. No liveness analysis, only calculating dependencies using barrier/users/alias information.
49 void Scheduler::AddDep(uint32_t *prio, Inst *from, Inst *to, uint32_t latency, Inst *barrier) in AddDep() argument
62 // Do not add cross-barrier depenedencies into deps_ in AddDep()
63 if (barrier == nullptr || old_[to] > old_[barrier]) { in AddDep()
109 bool barrier = inst->IsBarrier(); in ProcessInst() local
117 // Dependency to the barrier in ProcessInst()
122 // Dependency from barrier in ProcessInst()
123 if (barrier) { in ProcessInst()
234 bool barrier = inst->IsBarrier(); in ScheduleBasicBlock() local
240 if (barrier || inst == bb->GetLastInst()) { in ScheduleBasicBlock()
[all …]
Dscheduler.h57 void AddDep(uint32_t *prio, Inst *from, Inst *to, uint32_t latency, Inst *barrier);
/arkcompiler/runtime_core/docs/diagrams/
Dg1-concurrent-marking-activity.puactivity20 :Enable pre-barrier;
25 :Disable pre-barrier;
/arkcompiler/runtime_core/runtime/coretypes/
Darray.cpp63 …// Witout full memory barrier it is possible that architectures with weak memory order can try fet… in Create()
81 …// Without full memory barrier it is possible that architectures with weak memory order can try fe… in Create()
100 …// Witout full memory barrier it is possible that architectures with weak memory order can try fet… in Create()
123 …// Witout full memory barrier it is possible that architectures with weak memory order can try fet… in CreateTagged()
Dstring.cpp52 // After memcpy we should have a full barrier, so this writes should happen-before barrier in CreateFromString()
77 // After copying we should have a full barrier, so this writes should happen-before barrier in CreateFromMUtf8()
125 // After copying we should have a full barrier, so this writes should happen-before barrier in CreateFromUtf16()
176 // After copying we should have a full barrier, so this writes should happen-before barrier in CreateNewStringFromChars()
214 // After copying we should have a full barrier, so this writes should happen-before barrier in CreateNewStringFromBytes()
704 // After replacing we should have a full barrier, so this writes should happen-before barrier in DoReplace()
754 // After copying we should have a full barrier, so this writes should happen-before barrier in FastSubString()
801 // After copying we should have a full barrier, so this writes should happen-before barrier in Concat()
843 … // After setting length we should have a full barrier, so this write should happens-before barrier in AllocStringObject()
847 …// Witout full memory barrier it is possible that architectures with weak memory order can try fet… in AllocStringObject()
/arkcompiler/runtime_core/runtime/mem/
Drem_set.h74 …* Used in the barrier. Record the reference from the region of obj_addr to the region of value_add…
82 …* Used in the barrier. Record the reference from the region of addr to the region of the reference…
Dalloc_config.h59 // without 'volatile' specifier so full memory barrier is required in MemoryInit()
158 // without 'volatile' specifier so full memory barrier is required in MemoryInit()
273 // without 'volatile' specifier so full memory barrier is required in MemoryInit()
Dfreelist.h365 // Potentially, TSAN finds false data race (due to full memory barrier in Array::Create) in SetNextFree()
377 // TSAN finds false data race (due to full memory barrier in Array::Create in SetPrevFree()
/arkcompiler/runtime_core/docs/
Dmemory-management.md540 GC barrier is a block on writing to(write barrier) or reading from(read barrier) certain memory by …
549 Besides addressing of heap inconsistency problem, write barrier can be used for maintaining incomin…
551 So we can solve these issues with GC WRB(write barrier). GC WRB can be _pre_(inserted before the st…
553 _Pre_ barrier usually used to solve issue with lost alive object during concurrent marking. Pseudoc…
561 obj.field = new_val; // STORE for which barrier generated
564 _Post_ barrier can be used to solve issue with tracking references from tenured generation to the y…
566 obj.field = new_val; // STORE for which barrier generated
595 …1. To describe barrier use some meta-language or IR which can be interpreted/encoded by all compil…
596 …ions here, so consider this as an idea) One compiler knows how to encode barrier using runtime int…
597 …1. The compiler knows for each barrier type how it should be encoded (see pseudocode in `libpandab…
[all …]
Dglossary.md45 improve performance of GC barrier) for one card.
/arkcompiler/runtime_core/runtime/arch/amd64/
Dmemory.h20 // AMD64 has strict memory order, only compiler barrier is required
/arkcompiler/runtime_core/runtime/mem/gc/epsilon/
Depsilon_barrier.cpp24 LOG(DEBUG, GC) << "EpsilonGC barrier"; in CallEpsilonBarrier()
/arkcompiler/runtime_core/runtime/arch/x86/
Dmemory.h20 // X86 has strict memory order, only compiler barrier is required
/arkcompiler/runtime_core/compiler/optimizer/templates/intrinsics/
Dintrinsic_flags_test.inl.erb25 …_flags::NO_DCE | inst_flags::NO_CSE | inst_flags::NO_HOIST | inst_flags::BARRIER | inst_flags::REQ…
/arkcompiler/runtime_core/runtime/include/
Dobject_accessor-inl.h283 // update field with pre barrier in CompareAndSetFieldObject()
316 // update field with pre barrier in GetAndSetFieldObject()
455 // Need pre-barrier becuase the previous value may be a reference. in SetDynPrimitive()
463 // Don't need post barrier because the value is a primitive. in SetDynPrimitive()

12