auto import from //branches/cupcake/...@125939
diff --git a/include/utils/RefBase.h b/include/utils/RefBase.h
index e37b56f..cbda0fd 100644
--- a/include/utils/RefBase.h
+++ b/include/utils/RefBase.h
@@ -17,6 +17,7 @@
 #ifndef ANDROID_REF_BASE_H
 #define ANDROID_REF_BASE_H
 
+#include <cutils/atomic.h>
 #include <utils/TextOutput.h>
 
 #include <stdint.h>
@@ -142,6 +143,29 @@
 
 // ---------------------------------------------------------------------------
 
+template <class T>
+class LightRefBase
+{
+public:
+    inline LightRefBase() : mCount(0) { }
+    inline void incStrong(const void* id) const {
+        android_atomic_inc(&mCount);
+    }
+    inline void decStrong(const void* id) const {
+        if (android_atomic_dec(&mCount) == 1) {
+            delete static_cast<const T*>(this);
+        }
+    }
+    
+protected:
+    inline ~LightRefBase() { }
+    
+private:
+    mutable volatile int32_t mCount;
+};
+
+// ---------------------------------------------------------------------------
+
 template <typename T>
 class sp
 {