[cfe-commits] r52757 - in /cfe/trunk/lib/CodeGen: CGObjCGNU.cpp CGObjCRuntime.h

Chris Lattner sabre at nondot.org
Wed Jun 25 21:24:57 PDT 2008


Author: lattner
Date: Wed Jun 25 23:24:57 2008
New Revision: 52757

URL: http://llvm.org/viewvc/llvm-project?rev=52757&view=rev
Log:
improve indentation, avoid thrashing on maps and recalculating strings as much.

Modified:
    cfe/trunk/lib/CodeGen/CGObjCGNU.cpp
    cfe/trunk/lib/CodeGen/CGObjCRuntime.h

Modified: cfe/trunk/lib/CodeGen/CGObjCGNU.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCGNU.cpp?rev=52757&r1=52756&r2=52757&view=diff

==============================================================================
--- cfe/trunk/lib/CodeGen/CGObjCGNU.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGObjCGNU.cpp Wed Jun 25 23:24:57 2008
@@ -222,62 +222,53 @@
 /// Looks up the selector for the specified name / type pair.
 // FIXME: Selectors should be statically cached, not looked up on every call.
 llvm::Value *CGObjCGNU::GetSelector(llvm::IRBuilder &Builder,
-    llvm::Value *SelName,
-    llvm::Value *SelTypes) {
+                                    llvm::Value *SelName,
+                                    llvm::Value *SelTypes) {
   // For static selectors, we return an alias for now then store them all in a
   // list that the runtime will initialise later.
   if (llvm::Constant *CName = dyn_cast<llvm::Constant>(SelName)) {
     // Untyped selector
     if (SelTypes == 0) {
       // If it's already cached, return it.
-      if (UntypedSelectors[getStringValue(CName)]) {
-        // FIXME: Volatility
-        return Builder.CreateLoad(UntypedSelectors[getStringValue(CName)]);
+      llvm::GlobalAlias *&US = UntypedSelectors[getStringValue(CName)];
+      if (US == 0) {
+        // If it isn't, cache it.
+        US = new llvm::GlobalAlias(llvm::PointerType::getUnqual(SelectorTy),
+                                   llvm::GlobalValue::InternalLinkage,
+                                   ".objc_untyped_selector_alias",
+                                   NULL, &TheModule);
       }
-      // If it isn't, cache it.
-      llvm::GlobalAlias *Sel = new llvm::GlobalAlias(
-          llvm::PointerType::getUnqual(SelectorTy),
-          llvm::GlobalValue::InternalLinkage, ".objc_untyped_selector_alias",
-          NULL, &TheModule);
-      UntypedSelectors[getStringValue(CName)] = Sel;
-      // FIXME: Volatility
-      return Builder.CreateLoad(Sel);
+      return Builder.CreateLoad(US);
     }
     // Typed selectors
     if (llvm::Constant *CTypes = dyn_cast<llvm::Constant>(SelTypes)) {
       TypedSelector Selector = TypedSelector(getStringValue(CName),
                                              getStringValue(CTypes));
       // If it's already cached, return it.
-      if (TypedSelectors[Selector]) {
-        // FIXME: Volatility
-        return Builder.CreateLoad(TypedSelectors[Selector]);
+      llvm::GlobalAlias *&TS = TypedSelectors[Selector];
+      if (TS == 0) {
+        // If it isn't, cache it.
+        TS = new llvm::GlobalAlias(llvm::PointerType::getUnqual(SelectorTy),
+                                   llvm::GlobalValue::InternalLinkage,
+                                   ".objc_typed_selector_alias",
+                                   NULL, &TheModule);
       }
-      // If it isn't, cache it.
-      llvm::GlobalAlias *Sel = new llvm::GlobalAlias(
-          llvm::PointerType::getUnqual(SelectorTy),
-          llvm::GlobalValue::InternalLinkage, ".objc_typed_selector_alias",
-          NULL, &TheModule);
-      TypedSelectors[Selector] = Sel;
-      // FIXME: Volatility
-      return Builder.CreateLoad(Sel);
+      return Builder.CreateLoad(TS);
     }
   }
   // Dynamically look up selectors from non-constant sources
   llvm::Value *cmd;
   if (SelTypes == 0) {
     llvm::Constant *SelFunction = TheModule.getOrInsertFunction("sel_get_uid", 
-        SelectorTy, 
-        PtrToInt8Ty, 
-        NULL);
+                                                                SelectorTy, 
+                                                                PtrToInt8Ty, 
+                                                                NULL);
     cmd = Builder.CreateCall(SelFunction, SelName);
   }
   else {
     llvm::Constant *SelFunction = 
       TheModule.getOrInsertFunction("sel_get_typed_uid",
-          SelectorTy,
-          PtrToInt8Ty,
-          PtrToInt8Ty,
-          NULL);
+                                    SelectorTy, PtrToInt8Ty, PtrToInt8Ty, NULL);
     cmd = Builder.CreateCall2(SelFunction, SelName, SelTypes);
   }
   return cmd;

Modified: cfe/trunk/lib/CodeGen/CGObjCRuntime.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCRuntime.h?rev=52757&r1=52756&r2=52757&view=diff

==============================================================================
--- cfe/trunk/lib/CodeGen/CGObjCRuntime.h (original)
+++ cfe/trunk/lib/CodeGen/CGObjCRuntime.h Wed Jun 25 23:24:57 2008
@@ -52,8 +52,8 @@
   virtual llvm::Function *ModuleInitFunction() =0;
   /// Get a selector for the specified name and type values
   virtual llvm::Value *GetSelector(llvm::IRBuilder &Builder,
-      llvm::Value *SelName,
-      llvm::Value *SelTypes) =0;
+                                   llvm::Value *SelName,
+                                   llvm::Value *SelTypes) = 0;
   /// Generate a constant string object
   virtual llvm::Constant *GenerateConstantString(const char *String, const size_t
       length) =0;





More information about the cfe-commits mailing list