Home | History | Annotate | Download | only in llvm

Lines Matching full:irb_

42     : context_(context), module_(module), irb_(irb) {
59 CallInst* call_inst = irb_.CreateCall(func);
61 irb_.SetTBAA(call_inst, kTBAAConstJObject);
68 return irb_.LoadFromObjectOffset(thread, offset, type, s_ty);
74 irb_.StoreToObjectOffset(thread, offset, value, s_ty);
79 return irb_.CreateCall(func, thread);
89 irb_.getArtFrameTy()->getPointerTo(),
96 irb_.StoreToObjectOffset(new_shadow_frame,
102 irb_.StoreToObjectOffset(new_shadow_frame,
104 irb_.getInt32(num_vregs),
108 irb_.StoreToObjectOffset(new_shadow_frame,
122 irb_.CreateCall4(func,
126 irb_.getInt32(num_vregs));
127 irb_.SetTBAA(call_inst, kTBAARuntimeInfo);
143 return irb_.CreateCall(slow_func, EmitGetCurrentThread());
148 irb_.getJObjectTy(),
151 return irb_.CreateIsNotNull(exception);
159 CallInst* call_inst = irb_.CreateCall(slow_func, EmitGetCurrentThread());
160 irb_.SetTBAA(call_inst, kTBAAJRuntime);
168 irb_.LoadFromObjectOffset(object,
170 irb_.getJIntTy(),
174 irb_.CreateAnd(monitor, ~(LW_HASH_STATE_MASK << LW_HASH_STATE_SHIFT));
177 Value* unheld = irb_.CreateICmpEQ(real_monitor, irb_.getInt32(0));
179 Function* parent_func = irb_.GetInsertBlock()->getParent();
183 irb_.CreateCondBr(unheld, bb_fast, bb_slow, kLikely);
185 irb_.SetInsertPoint(bb_fast);
190 irb_.getInt32Ty(), kTBAARuntimeInfo);
192 Value* owner = irb_.CreateShl(lock_id, LW_LOCK_OWNER_SHIFT);
193 Value* new_monitor = irb_.CreateOr(monitor, owner);
197 irb_.CompareExchangeObjectOffset(object,
201 Value* retry_slow_path = irb_.CreateICmpEQ(old_monitor, monitor);
202 irb_.CreateCondBr(retry_slow_path, bb_cont, bb_slow, kLikely);
204 irb_.SetInsertPoint(bb_slow);
206 irb_.CreateCall2(slow_func, object, EmitGetCurrentThread());
207 irb_.CreateBr(bb_cont);
209 irb_.SetInsertPoint(bb_cont);
215 irb_.getJIntTy(),
218 irb_.LoadFromObjectOffset(object,
220 irb_.getJIntTy(),
223 Value* my_monitor = irb_.CreateShl(lock_id, LW_LOCK_OWNER_SHIFT);
224 Value* hash_state = irb_.CreateAnd(monitor, (LW_HASH_STATE_MASK << LW_HASH_STATE_SHIFT));
225 Value* real_monitor = irb_.CreateAnd(monitor, ~(LW_HASH_STATE_MASK << LW_HASH_STATE_SHIFT));
228 Value* is_fast_path = irb_.CreateICmpEQ(real_monitor, my_monitor);
230 Function* parent_func = irb_.GetInsertBlock()->getParent();
234 irb_.CreateCondBr(is_fast_path, bb_fast, bb_slow, kLikely);
236 irb_.SetInsertPoint(bb_fast);
238 irb_.StoreToObjectOffset(object,
242 irb_.CreateBr(bb_cont);
244 irb_.SetInsertPoint(bb_slow);
246 irb_.CreateCall2(slow_func, object, EmitGetCurrentThread());
247 irb_.CreateBr(bb_cont);
249 irb_.SetInsertPoint(bb_cont);
254 Function* parent_func = irb_.GetInsertBlock()->getParent();
258 ::llvm::Value* not_null = irb_.CreateIsNotNull(value);
259 irb_.CreateCondBr(not_null, bb_mark_gc_card, bb_cont);
261 irb_.SetInsertPoint(bb_mark_gc_card);
263 irb_.getInt8Ty()->getPointerTo(),
265 Value* target_addr_int = irb_.CreatePtrToInt(target_addr, irb_.getPtrEquivIntTy());
266 Value* card_no = irb_.CreateLShr(target_addr_int,
267 irb_.getPtrEquivInt(gc::accounting::CardTable::kCardShift));
268 Value* card_table_entry = irb_.CreateGEP(card_table, card_no);
269 irb_.CreateStore(irb_.getInt8(gc::accounting::CardTable::kCardDirty), card_table_entry,
271 irb_.CreateBr(bb_cont);
273 irb_.SetInsertPoint(bb_cont);