Lines Matching defs:lock
318 // Evaluate the lock operand. This is guaranteed to dominate the
319 // ARC release and lock-release cleanups.
321 llvm::Value *lock;
323 lock = CGF.EmitARCRetainScalarExpr(lockExpr);
324 lock = CGF.EmitObjCConsumeObject(lockExpr->getType(), lock);
326 lock = CGF.EmitScalarExpr(lockExpr);
328 lock = CGF.Builder.CreateBitCast(lock, CGF.VoidPtrTy);
330 // Acquire the lock.
331 CGF.Builder.CreateCall(syncEnterFn, lock)->setDoesNotThrow();
333 // Register an all-paths cleanup to release the lock.
334 CGF.EHStack.pushCleanup<CallSyncExit>(NormalAndEHCleanup, syncExitFn, lock);