Lines Matching refs:CGF
1030 llvm::Value *EmitClassRefViaRuntime(CodeGenFunction &CGF,
1066 CodeGen::RValue EmitMessageSend(CodeGen::CodeGenFunction &CGF,
1099 void GenerateDirectMethodPrologue(CodeGenFunction &CGF, llvm::Function *Fn,
1240 llvm::Value *EmitClassRef(CodeGenFunction &CGF,
1243 llvm::Value *EmitClassRefFromId(CodeGenFunction &CGF,
1246 llvm::Value *EmitNSAutoreleasePoolClassRef(CodeGenFunction &CGF) override;
1308 llvm::Value *EmitSelector(CodeGenFunction &CGF, Selector Sel);
1318 CodeGen::RValue GenerateMessageSend(CodeGen::CodeGenFunction &CGF,
1327 GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF,
1334 llvm::Value *GetClass(CodeGenFunction &CGF,
1337 llvm::Value *GetSelector(CodeGenFunction &CGF, Selector Sel) override;
1338 Address GetAddrOfSelector(CodeGenFunction &CGF, Selector Sel) override;
1342 llvm::Value *GetSelector(CodeGenFunction &CGF,
1353 llvm::Value *GenerateProtocolRef(CodeGenFunction &CGF,
1366 void EmitTryStmt(CodeGen::CodeGenFunction &CGF,
1368 void EmitSynchronizedStmt(CodeGen::CodeGenFunction &CGF,
1370 void EmitTryOrSynchronizedStmt(CodeGen::CodeGenFunction &CGF, const Stmt &S);
1371 void EmitThrowStmt(CodeGen::CodeGenFunction &CGF, const ObjCAtThrowStmt &S,
1373 llvm::Value * EmitObjCWeakRead(CodeGen::CodeGenFunction &CGF,
1375 void EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF,
1377 void EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF,
1380 void EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF,
1383 void EmitObjCStrongCastAssign(CodeGen::CodeGenFunction &CGF,
1385 void EmitGCMemmoveCollectable(CodeGen::CodeGenFunction &CGF,
1389 LValue EmitObjCValueForIvar(CodeGen::CodeGenFunction &CGF, QualType ObjectTy,
1392 llvm::Value *EmitIvarOffset(CodeGen::CodeGenFunction &CGF,
1481 CodeGen::RValue EmitVTableMessageSend(CodeGen::CodeGenFunction &CGF,
1502 llvm::Value *EmitLoadOfClassRef(CodeGenFunction &CGF,
1508 llvm::Value *EmitClassRef(CodeGenFunction &CGF,
1511 llvm::Value *EmitClassRefFromId(CodeGenFunction &CGF,
1515 llvm::Value *EmitNSAutoreleasePoolClassRef(CodeGenFunction &CGF) override;
1519 llvm::Value *EmitSuperClassRef(CodeGenFunction &CGF,
1524 llvm::Value *EmitMetaClassRef(CodeGenFunction &CGF,
1536 llvm::Value *EmitSelector(CodeGenFunction &CGF, Selector Sel);
1567 bool IsIvarOffsetKnownIdempotent(const CodeGen::CodeGenFunction &CGF, in IsIvarOffsetKnownIdempotent() argument
1584 dyn_cast_or_null<ObjCMethodDecl>(CGF.CurFuncDecl)) in IsIvarOffsetKnownIdempotent()
1607 CodeGen::RValue GenerateMessageSend(CodeGen::CodeGenFunction &CGF,
1616 GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF,
1623 llvm::Value *GetClass(CodeGenFunction &CGF,
1626 llvm::Value *GetSelector(CodeGenFunction &CGF, Selector Sel) override in GetSelector() argument
1627 { return EmitSelector(CGF, Sel); } in GetSelector()
1628 Address GetAddrOfSelector(CodeGenFunction &CGF, Selector Sel) override in GetAddrOfSelector() argument
1633 llvm::Value *GetSelector(CodeGenFunction &CGF, in GetSelector() argument
1635 { return EmitSelector(CGF, Method->getSelector()); } in GetSelector()
1643 llvm::Value *GenerateProtocolRef(CodeGenFunction &CGF,
1680 void EmitTryStmt(CodeGen::CodeGenFunction &CGF,
1682 void EmitSynchronizedStmt(CodeGen::CodeGenFunction &CGF,
1684 void EmitThrowStmt(CodeGen::CodeGenFunction &CGF, const ObjCAtThrowStmt &S,
1686 llvm::Value * EmitObjCWeakRead(CodeGen::CodeGenFunction &CGF,
1688 void EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF,
1690 void EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF,
1693 void EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF,
1696 void EmitObjCStrongCastAssign(CodeGen::CodeGenFunction &CGF,
1698 void EmitGCMemmoveCollectable(CodeGen::CodeGenFunction &CGF,
1701 LValue EmitObjCValueForIvar(CodeGen::CodeGenFunction &CGF, QualType ObjectTy,
1704 llvm::Value *EmitIvarOffset(CodeGen::CodeGenFunction &CGF,
1716 void init(CodeGenFunction &CGF, llvm::Value *receiver) { in init()
1718 NullBB = CGF.createBasicBlock("msgSend.null-receiver"); in init()
1719 llvm::BasicBlock *callBB = CGF.createBasicBlock("msgSend.call"); in init()
1725 llvm::Value *isNull = CGF.Builder.CreateIsNull(receiver); in init()
1726 CGF.Builder.CreateCondBr(isNull, NullBB, callBB); in init()
1729 CGF.EmitBlock(callBB); in init()
1734 RValue complete(CodeGenFunction &CGF, in complete()
1748 llvm::BasicBlock *callBB = CGF.Builder.GetInsertBlock(); in complete()
1750 contBB = CGF.createBasicBlock("msgSend.cont"); in complete()
1751 CGF.Builder.CreateBr(contBB); in complete()
1755 CGF.EmitBlock(NullBB); in complete()
1759 CGObjCRuntime::destroyCalleeDestroyedArguments(CGF, Method, CallArgs); in complete()
1763 assert(CGF.Builder.GetInsertBlock() == NullBB); in complete()
1768 if (contBB) CGF.EmitBlock(contBB); in complete()
1776 CGF.EmitFromMemory(CGF.CGM.EmitNullConstant(resultType), resultType); in complete()
1782 CGF.EmitBlock(contBB); in complete()
1783 llvm::PHINode *phi = CGF.Builder.CreatePHI(null->getType(), 2); in complete()
1796 CGF.EmitNullInitialization(result.getAggregateAddress(), resultType); in complete()
1797 if (contBB) CGF.EmitBlock(contBB); in complete()
1802 CGF.EmitBlock(contBB); in complete()
1810 llvm::PHINode *real = CGF.Builder.CreatePHI(scalarTy, 2); in complete()
1813 llvm::PHINode *imag = CGF.Builder.CreatePHI(scalarTy, 2); in complete()
1878 llvm::Value *CGObjCMac::GetClass(CodeGenFunction &CGF, in GetClass() argument
1880 return EmitClassRef(CGF, ID); in GetClass()
1884 llvm::Value *CGObjCMac::GetSelector(CodeGenFunction &CGF, Selector Sel) { in GetSelector() argument
1885 return EmitSelector(CGF, Sel); in GetSelector()
1887 Address CGObjCMac::GetAddrOfSelector(CodeGenFunction &CGF, Selector Sel) { in GetAddrOfSelector() argument
1890 llvm::Value *CGObjCMac::GetSelector(CodeGenFunction &CGF, const ObjCMethodDecl in GetSelector() argument
1892 return EmitSelector(CGF, Method->getSelector()); in GetSelector()
2051 CGObjCMac::GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF, in GenerateMessageSendSuper() argument
2064 CGF.CreateTempAlloca(ObjCTypes.SuperTy, CGF.getPointerAlign(), in GenerateMessageSendSuper()
2067 CGF.Builder.CreateBitCast(Receiver, ObjCTypes.ObjectPtrTy); in GenerateMessageSendSuper()
2068 CGF.Builder.CreateStore(ReceiverAsObject, in GenerateMessageSendSuper()
2069 CGF.Builder.CreateStructGEP(ObjCSuper, 0)); in GenerateMessageSendSuper()
2082 Target = EmitClassRef(CGF, Class->getSuperClass()); in GenerateMessageSendSuper()
2083 Target = CGF.Builder.CreateStructGEP(ObjCTypes.ClassTy, Target, 0); in GenerateMessageSendSuper()
2084 Target = CGF.Builder.CreateAlignedLoad(ClassTyPtr, Target, in GenerateMessageSendSuper()
2085 CGF.getPointerAlign()); in GenerateMessageSendSuper()
2089 CGF.Builder.CreateStructGEP(ObjCTypes.ClassTy, MetaClassPtr, 1); in GenerateMessageSendSuper()
2090 llvm::Value *Super = CGF.Builder.CreateAlignedLoad(ClassTyPtr, SuperPtr, in GenerateMessageSendSuper()
2091 CGF.getPointerAlign()); in GenerateMessageSendSuper()
2095 Target = EmitClassRef(CGF, Class->getSuperClass()); in GenerateMessageSendSuper()
2098 ClassPtr = CGF.Builder.CreateStructGEP(ObjCTypes.ClassTy, ClassPtr, 1); in GenerateMessageSendSuper()
2099 Target = CGF.Builder.CreateAlignedLoad(ClassTyPtr, ClassPtr, in GenerateMessageSendSuper()
2100 CGF.getPointerAlign()); in GenerateMessageSendSuper()
2105 CGM.getTypes().ConvertType(CGF.getContext().getObjCClassType()); in GenerateMessageSendSuper()
2106 Target = CGF.Builder.CreateBitCast(Target, ClassTy); in GenerateMessageSendSuper()
2107 CGF.Builder.CreateStore(Target, CGF.Builder.CreateStructGEP(ObjCSuper, 1)); in GenerateMessageSendSuper()
2108 return EmitMessageSend(CGF, Return, ResultType, Sel, ObjCSuper.getPointer(), in GenerateMessageSendSuper()
2114 CodeGen::RValue CGObjCMac::GenerateMessageSend(CodeGen::CodeGenFunction &CGF, in GenerateMessageSend() argument
2122 return EmitMessageSend(CGF, Return, ResultType, Sel, Receiver, in GenerateMessageSend()
2123 CGF.getContext().getObjCIdType(), false, CallArgs, in GenerateMessageSend()
2128 CGObjCCommonMac::EmitMessageSend(CodeGen::CodeGenFunction &CGF, in EmitMessageSend() argument
2140 auto selTy = CGF.getContext().getObjCSelType(); in EmitMessageSend()
2145 Arg0 = CGF.Builder.CreateBitCast(Arg0, ObjCTypes.ObjectPtrTy); in EmitMessageSend()
2159 canMessageReceiverBeNull(CGF, Method, IsSuper, ClassReceiver, Arg0); in EmitMessageSend()
2192 CGF.Builder.CreateBitCast(Fn.getCallee(), MSI.MessengerType)); in EmitMessageSend()
2205 nullReturn.init(CGF, Arg0); in EmitMessageSend()
2210 SelValue = GetSelector(CGF, Sel); in EmitMessageSend()
2216 RValue rvalue = CGF.EmitCall(MSI.CallInfo, Callee, Return, ActualArgs, in EmitMessageSend()
2225 return nullReturn.complete(CGF, Return, rvalue, ResultType, CallArgs, in EmitMessageSend()
2961 llvm::Value *CGObjCMac::GenerateProtocolRef(CodeGenFunction &CGF, in GenerateProtocolRef() argument
2991 CodeGenFunction &CGF, in EmitClassRefViaRuntime() argument
2996 llvm::Value *className = CGF.CGM in EmitClassRefViaRuntime()
3000 ASTContext &ctx = CGF.CGM.getContext(); in EmitClassRefViaRuntime()
3002 CGF.Builder.CreateBitCast(className, in EmitClassRefViaRuntime()
3003 CGF.ConvertType( in EmitClassRefViaRuntime()
3005 llvm::CallInst *call = CGF.Builder.CreateCall(lookUpClassFn, className); in EmitClassRefViaRuntime()
4026 CodeGenFunction &CGF, llvm::Function *Fn, const ObjCMethodDecl *OMD, in GenerateDirectMethodPrologue() argument
4028 auto &Builder = CGF.Builder; in GenerateDirectMethodPrologue()
4030 auto selfAddr = CGF.GetAddrOfLocalVar(OMD->getSelfDecl()); in GenerateDirectMethodPrologue()
4051 auto ResultType = CGF.getContext().getObjCIdType(); in GenerateDirectMethodPrologue()
4063 CGF, ReturnValueSlot(), ResultType, SelfSel, selfValue, Args, OID, in GenerateDirectMethodPrologue()
4075 CGF.createBasicBlock("objc_direct_method.self_is_nil"); in GenerateDirectMethodPrologue()
4077 CGF.createBasicBlock("objc_direct_method.cont"); in GenerateDirectMethodPrologue()
4087 CGF.EmitBlock(SelfIsNilBlock); in GenerateDirectMethodPrologue()
4093 CGF.EmitNullInitialization(CGF.ReturnValue, retTy); in GenerateDirectMethodPrologue()
4095 CGF.EmitBranchThroughCleanup(CGF.ReturnBlock); in GenerateDirectMethodPrologue()
4099 CGF.EmitBlock(ContBlock); in GenerateDirectMethodPrologue()
4105 Builder.CreateStore(GetSelector(CGF, OMD), in GenerateDirectMethodPrologue()
4106 CGF.GetAddrOfLocalVar(OMD->getCmdDecl())); in GenerateDirectMethodPrologue()
4232 void CGObjCMac::EmitTryStmt(CodeGenFunction &CGF, const ObjCAtTryStmt &S) { in EmitTryStmt() argument
4233 return EmitTryOrSynchronizedStmt(CGF, S); in EmitTryStmt()
4236 void CGObjCMac::EmitSynchronizedStmt(CodeGenFunction &CGF, in EmitSynchronizedStmt() argument
4238 return EmitTryOrSynchronizedStmt(CGF, S); in EmitSynchronizedStmt()
4256 void Emit(CodeGenFunction &CGF, Flags flags) override { in Emit()
4260 CGF.createBasicBlock("finally.call_exit"); in Emit()
4262 CGF.createBasicBlock("finally.no_call_exit"); in Emit()
4263 CGF.Builder.CreateCondBr(CGF.Builder.CreateLoad(CallTryExitVar), in Emit()
4266 CGF.EmitBlock(FinallyCallExit); in Emit()
4267 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionTryExitFn(), in Emit()
4270 CGF.EmitBlock(FinallyNoCallExit); in Emit()
4281 CGF.Builder.CreateLoad(CGF.getNormalCleanupDestSlot()); in Emit()
4283 CGF.EmitStmt(FinallyStmt->getFinallyBody()); in Emit()
4285 if (CGF.HaveInsertPoint()) { in Emit()
4286 CGF.Builder.CreateStore(CurCleanupDest, in Emit()
4287 CGF.getNormalCleanupDestSlot()); in Emit()
4290 CGF.EnsureInsertPoint(); in Emit()
4296 llvm::Value *SyncArg = CGF.Builder.CreateLoad(SyncArgSlot); in Emit()
4297 CGF.EmitNounwindRuntimeCall(ObjCTypes.getSyncExitFn(), SyncArg); in Emit()
4303 CodeGenFunction &CGF; member in __anon0dba85c70811::FragileHazards
4316 FragileHazards(CodeGenFunction &CGF);
4328 FragileHazards::FragileHazards(CodeGenFunction &CGF) : CGF(CGF) { in FragileHazards() argument
4335 I = CGF.CurFn->begin(), E = CGF.CurFn->end(); I != E; ++I) in FragileHazards()
4374 llvm::CallInst *Call = CGF.EmitNounwindRuntimeCall(WriteHazard, Locals); in emitWriteHazard()
4377 CGF.getLLVMContext(), llvm::Attribute::ElementType, in emitWriteHazard()
4385 call->setCallingConv(CGF.getRuntimeCC()); in emitReadHazard()
4397 CGBuilderTy Builder(CGF, CGF.getLLVMContext()); in emitHazardsInNewBlocks()
4401 FI = CGF.CurFn->begin(), FE = CGF.CurFn->end(); FI != FE; ++FI) { in emitHazardsInNewBlocks()
4440 addIfPresent(AllocasToIgnore, CGF.ReturnValue); in collectLocals()
4441 addIfPresent(AllocasToIgnore, CGF.NormalCleanupDest); in collectLocals()
4445 llvm::BasicBlock &Entry = CGF.CurFn->getEntryBlock(); in collectLocals()
4456 return llvm::FunctionType::get(CGF.VoidTy, tys, false); in GetAsmFnType()
4571 void CGObjCMac::EmitTryOrSynchronizedStmt(CodeGen::CodeGenFunction &CGF, in EmitTryOrSynchronizedStmt() argument
4578 CGF.getJumpDestInCurrentScope("finally.end"); in EmitTryOrSynchronizedStmt()
4583 CGF.getJumpDestInCurrentScope("finally.rethrow"); in EmitTryOrSynchronizedStmt()
4593 CGF.EmitScalarExpr(cast<ObjCAtSynchronizedStmt>(S).getSynchExpr()); in EmitTryOrSynchronizedStmt()
4594 SyncArg = CGF.Builder.CreateBitCast(SyncArg, ObjCTypes.ObjectPtrTy); in EmitTryOrSynchronizedStmt()
4595 CGF.EmitNounwindRuntimeCall(ObjCTypes.getSyncEnterFn(), SyncArg); in EmitTryOrSynchronizedStmt()
4597 SyncArgSlot = CGF.CreateTempAlloca(SyncArg->getType(), in EmitTryOrSynchronizedStmt()
4598 CGF.getPointerAlign(), "sync.arg"); in EmitTryOrSynchronizedStmt()
4599 CGF.Builder.CreateStore(SyncArg, SyncArgSlot); in EmitTryOrSynchronizedStmt()
4604 Address ExceptionData = CGF.CreateTempAlloca(ObjCTypes.ExceptionDataTy, in EmitTryOrSynchronizedStmt()
4605 CGF.getPointerAlign(), in EmitTryOrSynchronizedStmt()
4612 FragileHazards Hazards(CGF); in EmitTryOrSynchronizedStmt()
4622 Address CallTryExitVar = CGF.CreateTempAlloca(CGF.Builder.getInt1Ty(), in EmitTryOrSynchronizedStmt()
4631 CGF.EHStack.pushCleanup<PerformFragileFinally>(NormalAndEHCleanup, &S, in EmitTryOrSynchronizedStmt()
4640 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionTryEnterFn(), in EmitTryOrSynchronizedStmt()
4644 llvm::Constant *Zero = llvm::ConstantInt::get(CGF.Builder.getInt32Ty(), 0); in EmitTryOrSynchronizedStmt()
4646 llvm::Value *SetJmpBuffer = CGF.Builder.CreateGEP( in EmitTryOrSynchronizedStmt()
4649 llvm::CallInst *SetJmpResult = CGF.EmitNounwindRuntimeCall( in EmitTryOrSynchronizedStmt()
4655 llvm::BasicBlock *TryBlock = CGF.createBasicBlock("try"); in EmitTryOrSynchronizedStmt()
4656 llvm::BasicBlock *TryHandler = CGF.createBasicBlock("try.handler"); in EmitTryOrSynchronizedStmt()
4658 CGF.Builder.CreateIsNotNull(SetJmpResult, "did_catch_exception"); in EmitTryOrSynchronizedStmt()
4659 CGF.Builder.CreateCondBr(DidCatch, TryHandler, TryBlock); in EmitTryOrSynchronizedStmt()
4662 CGF.EmitBlock(TryBlock); in EmitTryOrSynchronizedStmt()
4663 CGF.Builder.CreateStore(CGF.Builder.getTrue(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4664 CGF.EmitStmt(isTry ? cast<ObjCAtTryStmt>(S).getTryBody() in EmitTryOrSynchronizedStmt()
4667 CGBuilderTy::InsertPoint TryFallthroughIP = CGF.Builder.saveAndClearIP(); in EmitTryOrSynchronizedStmt()
4670 CGF.EmitBlock(TryHandler); in EmitTryOrSynchronizedStmt()
4679 CGF.Builder.CreateStore(CGF.Builder.getFalse(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4680 CGF.EmitBranchThroughCleanup(FinallyRethrow); in EmitTryOrSynchronizedStmt()
4687 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionExtractFn(), in EmitTryOrSynchronizedStmt()
4692 CGF.ObjCEHValueStack.push_back(Caught); in EmitTryOrSynchronizedStmt()
4703 PropagatingExnVar = CGF.CreateTempAlloca(Caught->getType(), in EmitTryOrSynchronizedStmt()
4704 CGF.getPointerAlign(), in EmitTryOrSynchronizedStmt()
4706 CGF.Builder.CreateStore(Caught, PropagatingExnVar); in EmitTryOrSynchronizedStmt()
4710 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionTryEnterFn(), in EmitTryOrSynchronizedStmt()
4714 CGF.EmitNounwindRuntimeCall(ObjCTypes.getSetJmpFn(), in EmitTryOrSynchronizedStmt()
4719 CGF.Builder.CreateIsNotNull(SetJmpResult, "did_catch_exception"); in EmitTryOrSynchronizedStmt()
4721 CatchBlock = CGF.createBasicBlock("catch"); in EmitTryOrSynchronizedStmt()
4722 CatchHandler = CGF.createBasicBlock("catch_for_catch"); in EmitTryOrSynchronizedStmt()
4723 CGF.Builder.CreateCondBr(Threw, CatchHandler, CatchBlock); in EmitTryOrSynchronizedStmt()
4725 CGF.EmitBlock(CatchBlock); in EmitTryOrSynchronizedStmt()
4728 CGF.Builder.CreateStore(CGF.Builder.getInt1(HasFinally), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4754 CodeGenFunction::RunCleanupsScope CatchVarCleanups(CGF); in EmitTryOrSynchronizedStmt()
4757 CGF.EmitAutoVarDecl(*CatchParam); in EmitTryOrSynchronizedStmt()
4758 assert(CGF.HaveInsertPoint() && "DeclStmt destroyed insert point?"); in EmitTryOrSynchronizedStmt()
4761 EmitInitOfCatchParam(CGF, Caught, CatchParam); in EmitTryOrSynchronizedStmt()
4764 CGF.EmitStmt(CatchStmt->getCatchBody()); in EmitTryOrSynchronizedStmt()
4769 CGF.EmitBranchThroughCleanup(FinallyEnd); in EmitTryOrSynchronizedStmt()
4781 llvm::Value *Class = EmitClassRef(CGF, IDecl); in EmitTryOrSynchronizedStmt()
4785 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionMatchFn(), in EmitTryOrSynchronizedStmt()
4788 llvm::BasicBlock *MatchedBlock = CGF.createBasicBlock("match"); in EmitTryOrSynchronizedStmt()
4789 llvm::BasicBlock *NextCatchBlock = CGF.createBasicBlock("catch.next"); in EmitTryOrSynchronizedStmt()
4791 CGF.Builder.CreateCondBr(CGF.Builder.CreateIsNotNull(Match, "matched"), in EmitTryOrSynchronizedStmt()
4795 CGF.EmitBlock(MatchedBlock); in EmitTryOrSynchronizedStmt()
4799 CodeGenFunction::RunCleanupsScope CatchVarCleanups(CGF); in EmitTryOrSynchronizedStmt()
4801 CGF.EmitAutoVarDecl(*CatchParam); in EmitTryOrSynchronizedStmt()
4802 assert(CGF.HaveInsertPoint() && "DeclStmt destroyed insert point?"); in EmitTryOrSynchronizedStmt()
4806 CGF.Builder.CreateBitCast(Caught, in EmitTryOrSynchronizedStmt()
4807 CGF.ConvertType(CatchParam->getType())); in EmitTryOrSynchronizedStmt()
4808 EmitInitOfCatchParam(CGF, Tmp, CatchParam); in EmitTryOrSynchronizedStmt()
4810 CGF.EmitStmt(CatchStmt->getCatchBody()); in EmitTryOrSynchronizedStmt()
4815 CGF.EmitBranchThroughCleanup(FinallyEnd); in EmitTryOrSynchronizedStmt()
4817 CGF.EmitBlock(NextCatchBlock); in EmitTryOrSynchronizedStmt()
4820 CGF.ObjCEHValueStack.pop_back(); in EmitTryOrSynchronizedStmt()
4828 CGF.EmitBranchThroughCleanup(FinallyRethrow); in EmitTryOrSynchronizedStmt()
4832 CGF.EmitBlock(CatchHandler); in EmitTryOrSynchronizedStmt()
4843 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionExtractFn(), in EmitTryOrSynchronizedStmt()
4845 CGF.Builder.CreateStore(NewCaught, PropagatingExnVar); in EmitTryOrSynchronizedStmt()
4848 CGF.Builder.CreateStore(CGF.Builder.getFalse(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4849 CGF.EmitBranchThroughCleanup(FinallyRethrow); in EmitTryOrSynchronizedStmt()
4857 CGF.Builder.restoreIP(TryFallthroughIP); in EmitTryOrSynchronizedStmt()
4858 if (CGF.HaveInsertPoint()) in EmitTryOrSynchronizedStmt()
4859 CGF.Builder.CreateStore(CGF.Builder.getTrue(), CallTryExitVar); in EmitTryOrSynchronizedStmt()
4860 CGF.PopCleanupBlock(); in EmitTryOrSynchronizedStmt()
4861 CGF.EmitBlock(FinallyEnd.getBlock(), true); in EmitTryOrSynchronizedStmt()
4864 CGBuilderTy::InsertPoint SavedIP = CGF.Builder.saveAndClearIP(); in EmitTryOrSynchronizedStmt()
4865 CGF.EmitBlock(FinallyRethrow.getBlock(), true); in EmitTryOrSynchronizedStmt()
4866 if (CGF.HaveInsertPoint()) { in EmitTryOrSynchronizedStmt()
4870 PropagatingExn = CGF.Builder.CreateLoad(PropagatingExnVar); in EmitTryOrSynchronizedStmt()
4875 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionExtractFn(), in EmitTryOrSynchronizedStmt()
4880 CGF.EmitNounwindRuntimeCall(ObjCTypes.getExceptionThrowFn(), in EmitTryOrSynchronizedStmt()
4882 CGF.Builder.CreateUnreachable(); in EmitTryOrSynchronizedStmt()
4885 CGF.Builder.restoreIP(SavedIP); in EmitTryOrSynchronizedStmt()
4888 void CGObjCMac::EmitThrowStmt(CodeGen::CodeGenFunction &CGF, in EmitThrowStmt() argument
4894 llvm::Value *Exception = CGF.EmitObjCThrowOperand(ThrowExpr); in EmitThrowStmt()
4896 CGF.Builder.CreateBitCast(Exception, ObjCTypes.ObjectPtrTy); in EmitThrowStmt()
4898 assert((!CGF.ObjCEHValueStack.empty() && CGF.ObjCEHValueStack.back()) && in EmitThrowStmt()
4900 ExceptionAsObject = CGF.ObjCEHValueStack.back(); in EmitThrowStmt()
4903 CGF.EmitRuntimeCall(ObjCTypes.getExceptionThrowFn(), ExceptionAsObject) in EmitThrowStmt()
4905 CGF.Builder.CreateUnreachable(); in EmitThrowStmt()
4909 CGF.Builder.ClearInsertionPoint(); in EmitThrowStmt()
4915 llvm::Value * CGObjCMac::EmitObjCWeakRead(CodeGen::CodeGenFunction &CGF, in EmitObjCWeakRead() argument
4918 llvm::Value *AddrWeakObjVal = CGF.Builder.CreateBitCast( in EmitObjCWeakRead()
4921 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcReadWeakFn(), in EmitObjCWeakRead()
4923 read_weak = CGF.Builder.CreateBitCast(read_weak, DestTy); in EmitObjCWeakRead()
4930 void CGObjCMac::EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCWeakAssign() argument
4936 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, CGM.Int32Ty) in EmitObjCWeakAssign()
4937 : CGF.Builder.CreateBitCast(src, CGM.Int64Ty); in EmitObjCWeakAssign()
4938 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCWeakAssign()
4940 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCWeakAssign()
4942 CGF.Builder.CreateBitCast(dst.getPointer(), ObjCTypes.PtrObjectPtrTy); in EmitObjCWeakAssign()
4944 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignWeakFn(), in EmitObjCWeakAssign()
4951 void CGObjCMac::EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCGlobalAssign() argument
4958 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, CGM.Int32Ty) in EmitObjCGlobalAssign()
4959 : CGF.Builder.CreateBitCast(src, CGM.Int64Ty); in EmitObjCGlobalAssign()
4960 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCGlobalAssign()
4962 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCGlobalAssign()
4964 CGF.Builder.CreateBitCast(dst.getPointer(), ObjCTypes.PtrObjectPtrTy); in EmitObjCGlobalAssign()
4967 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignGlobalFn(), in EmitObjCGlobalAssign()
4970 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignThreadLocalFn(), in EmitObjCGlobalAssign()
4977 void CGObjCMac::EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCIvarAssign() argument
4985 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, CGM.Int32Ty) in EmitObjCIvarAssign()
4986 : CGF.Builder.CreateBitCast(src, CGM.Int64Ty); in EmitObjCIvarAssign()
4987 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCIvarAssign()
4989 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCIvarAssign()
4991 CGF.Builder.CreateBitCast(dst.getPointer(), ObjCTypes.PtrObjectPtrTy); in EmitObjCIvarAssign()
4993 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignIvarFn(), args); in EmitObjCIvarAssign()
4999 void CGObjCMac::EmitObjCStrongCastAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCStrongCastAssign() argument
5005 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, CGM.Int32Ty) in EmitObjCStrongCastAssign()
5006 : CGF.Builder.CreateBitCast(src, CGM.Int64Ty); in EmitObjCStrongCastAssign()
5007 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCStrongCastAssign()
5009 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCStrongCastAssign()
5011 CGF.Builder.CreateBitCast(dst.getPointer(), ObjCTypes.PtrObjectPtrTy); in EmitObjCStrongCastAssign()
5013 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignStrongCastFn(), in EmitObjCStrongCastAssign()
5017 void CGObjCMac::EmitGCMemmoveCollectable(CodeGen::CodeGenFunction &CGF, in EmitGCMemmoveCollectable() argument
5021 SrcPtr = CGF.Builder.CreateElementBitCast(SrcPtr, CGF.Int8Ty); in EmitGCMemmoveCollectable()
5022 DestPtr = CGF.Builder.CreateElementBitCast(DestPtr, CGF.Int8Ty); in EmitGCMemmoveCollectable()
5024 CGF.EmitNounwindRuntimeCall(ObjCTypes.GcMemmoveCollectableFn(), args); in EmitGCMemmoveCollectable()
5029 LValue CGObjCMac::EmitObjCValueForIvar(CodeGen::CodeGenFunction &CGF, in EmitObjCValueForIvar() argument
5036 return EmitValueForIvarAtOffset(CGF, ID, BaseValue, Ivar, CVRQualifiers, in EmitObjCValueForIvar()
5037 EmitIvarOffset(CGF, ID, Ivar)); in EmitObjCValueForIvar()
5040 llvm::Value *CGObjCMac::EmitIvarOffset(CodeGen::CodeGenFunction &CGF, in EmitIvarOffset() argument
5222 llvm::Value *CGObjCMac::EmitClassRefFromId(CodeGenFunction &CGF, in EmitClassRefFromId() argument
5238 return CGF.Builder.CreateAlignedLoad(Entry->getValueType(), Entry, in EmitClassRefFromId()
5239 CGF.getPointerAlign()); in EmitClassRefFromId()
5242 llvm::Value *CGObjCMac::EmitClassRef(CodeGenFunction &CGF, in EmitClassRef() argument
5247 return EmitClassRefViaRuntime(CGF, ID, ObjCTypes); in EmitClassRef()
5251 return EmitClassRefFromId(CGF, RuntimeName); in EmitClassRef()
5254 llvm::Value *CGObjCMac::EmitNSAutoreleasePoolClassRef(CodeGenFunction &CGF) { in EmitNSAutoreleasePoolClassRef() argument
5256 return EmitClassRefFromId(CGF, II); in EmitNSAutoreleasePoolClassRef()
5259 llvm::Value *CGObjCMac::EmitSelector(CodeGenFunction &CGF, Selector Sel) { in EmitSelector() argument
5260 return CGF.Builder.CreateLoad(EmitSelectorAddr(Sel)); in EmitSelector()
6618 llvm::Value *CGObjCNonFragileABIMac::GenerateProtocolRef(CodeGenFunction &CGF, in GenerateProtocolRef() argument
6632 CharUnits Align = CGF.getPointerAlign(); in GenerateProtocolRef()
6636 return CGF.Builder.CreateAlignedLoad(PTGV->getValueType(), PTGV, Align); in GenerateProtocolRef()
6647 return CGF.Builder.CreateAlignedLoad(PTGV->getValueType(), PTGV, Align); in GenerateProtocolRef()
7197 CodeGen::CodeGenFunction &CGF, in EmitObjCValueForIvar() argument
7203 llvm::Value *Offset = EmitIvarOffset(CGF, ID, Ivar); in EmitObjCValueForIvar()
7204 return EmitValueForIvarAtOffset(CGF, ID, BaseValue, Ivar, CVRQualifiers, in EmitObjCValueForIvar()
7209 CGObjCNonFragileABIMac::EmitIvarOffset(CodeGen::CodeGenFunction &CGF, in EmitIvarOffset() argument
7220 CGF.Builder.CreateAlignedLoad(GV->getValueType(), GV, in EmitIvarOffset()
7221 CGF.getSizeAlign(), "ivar"); in EmitIvarOffset()
7222 if (IsIvarOffsetKnownIdempotent(CGF, Ivar)) in EmitIvarOffset()
7232 IvarOffsetValue = CGF.Builder.CreateIntCast( in EmitIvarOffset()
7261 CGObjCNonFragileABIMac::EmitVTableMessageSend(CodeGenFunction &CGF, in EmitVTableMessageSend() argument
7275 arg0 = CGF.Builder.CreateBitCast(arg0, ObjCTypes.ObjectPtrTy); in EmitVTableMessageSend()
7302 nullReturn.init(CGF, arg0); in EmitVTableMessageSend()
7346 nullReturn.init(CGF, arg0); in EmitVTableMessageSend()
7353 Address(CGF.Builder.CreateBitCast(messageRef, ObjCTypes.MessageRefPtrTy), in EmitVTableMessageSend()
7354 ObjCTypes.MessageRefTy, CGF.getPointerAlign()); in EmitVTableMessageSend()
7360 Address calleeAddr = CGF.Builder.CreateStructGEP(mref, 0); in EmitVTableMessageSend()
7361 llvm::Value *calleePtr = CGF.Builder.CreateLoad(calleeAddr, "msgSend_fn"); in EmitVTableMessageSend()
7363 calleePtr = CGF.Builder.CreateBitCast(calleePtr, MSI.MessengerType); in EmitVTableMessageSend()
7366 RValue result = CGF.EmitCall(MSI.CallInfo, callee, returnSlot, args); in EmitVTableMessageSend()
7367 return nullReturn.complete(CGF, returnSlot, result, resultType, formalArgs, in EmitVTableMessageSend()
7373 CGObjCNonFragileABIMac::GenerateMessageSend(CodeGen::CodeGenFunction &CGF, in GenerateMessageSend() argument
7382 ? EmitVTableMessageSend(CGF, Return, ResultType, Sel, in GenerateMessageSend()
7383 Receiver, CGF.getContext().getObjCIdType(), in GenerateMessageSend()
7385 : EmitMessageSend(CGF, Return, ResultType, Sel, in GenerateMessageSend()
7386 Receiver, CGF.getContext().getObjCIdType(), in GenerateMessageSend()
7450 CGObjCNonFragileABIMac::EmitLoadOfClassRef(CodeGenFunction &CGF, in EmitLoadOfClassRef() argument
7456 return CGF.EmitRuntimeCall( in EmitLoadOfClassRef()
7460 CharUnits Align = CGF.getPointerAlign(); in EmitLoadOfClassRef()
7461 return CGF.Builder.CreateAlignedLoad(Entry->getValueType(), Entry, Align); in EmitLoadOfClassRef()
7465 CGObjCNonFragileABIMac::EmitClassRefFromId(CodeGenFunction &CGF, in EmitClassRefFromId() argument
7487 Entry->setAlignment(CGF.getPointerAlign().getAsAlign()); in EmitClassRefFromId()
7494 return EmitLoadOfClassRef(CGF, ID, Entry); in EmitClassRefFromId()
7497 llvm::Value *CGObjCNonFragileABIMac::EmitClassRef(CodeGenFunction &CGF, in EmitClassRef() argument
7502 return EmitClassRefViaRuntime(CGF, ID, ObjCTypes); in EmitClassRef()
7504 return EmitClassRefFromId(CGF, ID->getIdentifier(), ID); in EmitClassRef()
7508 CodeGenFunction &CGF) { in EmitNSAutoreleasePoolClassRef() argument
7510 return EmitClassRefFromId(CGF, II, nullptr); in EmitNSAutoreleasePoolClassRef()
7514 CGObjCNonFragileABIMac::EmitSuperClassRef(CodeGenFunction &CGF, in EmitSuperClassRef() argument
7525 Entry->setAlignment(CGF.getPointerAlign().getAsAlign()); in EmitSuperClassRef()
7530 return EmitLoadOfClassRef(CGF, ID, Entry); in EmitSuperClassRef()
7536 llvm::Value *CGObjCNonFragileABIMac::EmitMetaClassRef(CodeGenFunction &CGF, in EmitMetaClassRef() argument
7539 CharUnits Align = CGF.getPointerAlign(); in EmitMetaClassRef()
7553 return CGF.Builder.CreateAlignedLoad(ObjCTypes.ClassnfABIPtrTy, Entry, Align); in EmitMetaClassRef()
7558 llvm::Value *CGObjCNonFragileABIMac::GetClass(CodeGenFunction &CGF, in GetClass() argument
7567 return EmitClassRef(CGF, ID); in GetClass()
7574 CGObjCNonFragileABIMac::GenerateMessageSendSuper(CodeGen::CodeGenFunction &CGF, in GenerateMessageSendSuper() argument
7588 CGF.CreateTempAlloca(ObjCTypes.SuperTy, CGF.getPointerAlign(), in GenerateMessageSendSuper()
7592 CGF.Builder.CreateBitCast(Receiver, ObjCTypes.ObjectPtrTy); in GenerateMessageSendSuper()
7593 CGF.Builder.CreateStore(ReceiverAsObject, in GenerateMessageSendSuper()
7594 CGF.Builder.CreateStructGEP(ObjCSuper, 0)); in GenerateMessageSendSuper()
7599 Target = EmitMetaClassRef(CGF, Class, Class->isWeakImported()); in GenerateMessageSendSuper()
7601 Target = EmitSuperClassRef(CGF, Class); in GenerateMessageSendSuper()
7606 CGM.getTypes().ConvertType(CGF.getContext().getObjCClassType()); in GenerateMessageSendSuper()
7607 Target = CGF.Builder.CreateBitCast(Target, ClassTy); in GenerateMessageSendSuper()
7608 CGF.Builder.CreateStore(Target, CGF.Builder.CreateStructGEP(ObjCSuper, 1)); in GenerateMessageSendSuper()
7611 ? EmitVTableMessageSend(CGF, Return, ResultType, Sel, in GenerateMessageSendSuper()
7614 : EmitMessageSend(CGF, Return, ResultType, Sel, in GenerateMessageSendSuper()
7619 llvm::Value *CGObjCNonFragileABIMac::EmitSelector(CodeGenFunction &CGF, in EmitSelector() argument
7623 llvm::LoadInst* LI = CGF.Builder.CreateLoad(Addr); in EmitSelector()
7654 void CGObjCNonFragileABIMac::EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCIvarAssign() argument
7662 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCIvarAssign()
7663 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCIvarAssign()
7664 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCIvarAssign()
7666 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCIvarAssign()
7668 CGF.Builder.CreateBitCast(dst.getPointer(), ObjCTypes.PtrObjectPtrTy); in EmitObjCIvarAssign()
7670 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignIvarFn(), args); in EmitObjCIvarAssign()
7677 CodeGen::CodeGenFunction &CGF, in EmitObjCStrongCastAssign() argument
7683 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCStrongCastAssign()
7684 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCStrongCastAssign()
7685 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCStrongCastAssign()
7687 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCStrongCastAssign()
7689 CGF.Builder.CreateBitCast(dst.getPointer(), ObjCTypes.PtrObjectPtrTy); in EmitObjCStrongCastAssign()
7691 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignStrongCastFn(), in EmitObjCStrongCastAssign()
7696 CodeGen::CodeGenFunction &CGF, in EmitGCMemmoveCollectable() argument
7700 SrcPtr = CGF.Builder.CreateElementBitCast(SrcPtr, CGF.Int8Ty); in EmitGCMemmoveCollectable()
7701 DestPtr = CGF.Builder.CreateElementBitCast(DestPtr, CGF.Int8Ty); in EmitGCMemmoveCollectable()
7703 CGF.EmitNounwindRuntimeCall(ObjCTypes.GcMemmoveCollectableFn(), args); in EmitGCMemmoveCollectable()
7710 CodeGen::CodeGenFunction &CGF, in EmitObjCWeakRead() argument
7713 llvm::Value *AddrWeakObjVal = CGF.Builder.CreateBitCast( in EmitObjCWeakRead()
7716 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcReadWeakFn(), in EmitObjCWeakRead()
7718 read_weak = CGF.Builder.CreateBitCast(read_weak, DestTy); in EmitObjCWeakRead()
7725 void CGObjCNonFragileABIMac::EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCWeakAssign() argument
7731 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCWeakAssign()
7732 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCWeakAssign()
7733 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCWeakAssign()
7735 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCWeakAssign()
7737 CGF.Builder.CreateBitCast(dst.getPointer(), ObjCTypes.PtrObjectPtrTy); in EmitObjCWeakAssign()
7739 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignWeakFn(), in EmitObjCWeakAssign()
7746 void CGObjCNonFragileABIMac::EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF, in EmitObjCGlobalAssign() argument
7753 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy) in EmitObjCGlobalAssign()
7754 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy)); in EmitObjCGlobalAssign()
7755 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy); in EmitObjCGlobalAssign()
7757 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy); in EmitObjCGlobalAssign()
7759 CGF.Builder.CreateBitCast(dst.getPointer(), ObjCTypes.PtrObjectPtrTy); in EmitObjCGlobalAssign()
7762 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignGlobalFn(), in EmitObjCGlobalAssign()
7765 CGF.EmitNounwindRuntimeCall(ObjCTypes.getGcAssignThreadLocalFn(), in EmitObjCGlobalAssign()
7770 CGObjCNonFragileABIMac::EmitSynchronizedStmt(CodeGen::CodeGenFunction &CGF, in EmitSynchronizedStmt() argument
7772 EmitAtSynchronizedStmt(CGF, S, ObjCTypes.getSyncEnterFn(), in EmitSynchronizedStmt()
7802 void CGObjCNonFragileABIMac::EmitTryStmt(CodeGen::CodeGenFunction &CGF, in EmitTryStmt() argument
7804 EmitTryCatchStmt(CGF, S, ObjCTypes.getObjCBeginCatchFn(), in EmitTryStmt()
7810 void CGObjCNonFragileABIMac::EmitThrowStmt(CodeGen::CodeGenFunction &CGF, in EmitThrowStmt() argument
7814 llvm::Value *Exception = CGF.EmitObjCThrowOperand(ThrowExpr); in EmitThrowStmt()
7815 Exception = CGF.Builder.CreateBitCast(Exception, ObjCTypes.ObjectPtrTy); in EmitThrowStmt()
7817 CGF.EmitRuntimeCallOrInvoke(ObjCTypes.getExceptionThrowFn(), Exception); in EmitThrowStmt()
7821 CGF.EmitRuntimeCallOrInvoke(ObjCTypes.getExceptionRethrowFn()); in EmitThrowStmt()
7825 CGF.Builder.CreateUnreachable(); in EmitThrowStmt()
7827 CGF.Builder.ClearInsertionPoint(); in EmitThrowStmt()