Continue with linker error fixes.
diff --git a/V8Binding/V8Binding.derived.mk b/V8Binding/V8Binding.derived.mk
index e0bb883..0bfd6a1 100644
--- a/V8Binding/V8Binding.derived.mk
+++ b/V8Binding/V8Binding.derived.mk
@@ -23,6 +23,7 @@
   $(LOCAL_PATH)/v8/include \
 	$(WEBCORE_PATH)/bindings/v8 \
 	$(WEBCORE_PATH)/bindings/v8/custom \
+	$(LOCAL_PATH)/binding \
 	$(LOCAL_PATH)/npapi \
 	$(LOCAL_PATH)/jni \
 	$(JAVASCRIPTCORE_PATH)/wtf \
@@ -161,6 +162,7 @@
 endif
 
 LOCAL_SRC_FILES := \
+	binding/InitializeThreading.cpp \
 	jni/jni_class.cpp \
 	jni/jni_instance.cpp \
 	jni/jni_npobject.cpp \
diff --git a/V8Binding/binding/InitializeThreading.cpp b/V8Binding/binding/InitializeThreading.cpp
new file mode 100644
index 0000000..8577369
--- /dev/null
+++ b/V8Binding/binding/InitializeThreading.cpp
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer. 
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution. 
+ * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "InitializeThreading.h"
+#include <wtf/Threading.h>
+
+namespace V8 {
+
+void initializeThreading() {
+    static bool initializedThreading = false;
+    if (!initializedThreading) {
+        WTF::initializeThreading();
+        initializedThreading = true;
+    }
+}
+
+}  // namespace JSC
+
+
diff --git a/V8Binding/binding/InitializeThreading.h b/V8Binding/binding/InitializeThreading.h
new file mode 100644
index 0000000..47b3957
--- /dev/null
+++ b/V8Binding/binding/InitializeThreading.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2008 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer. 
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution. 
+ * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission. 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+ 
+#ifndef InitializeThreading_h
+#define InitializeThreading_h
+
+namespace V8 {
+
+    // This function must be called from the main thread. It is safe to call it repeatedly.
+    // Darwin is an exception to this rule: it is OK to call this function from any thread, even reentrantly.
+    void initializeThreading();
+}
+
+#endif // InitializeThreading_h
+
diff --git a/V8Binding/jni/jni_npobject.cpp b/V8Binding/jni/jni_npobject.cpp
index 3765452..9f59045 100644
--- a/V8Binding/jni/jni_npobject.cpp
+++ b/V8Binding/jni/jni_npobject.cpp
@@ -68,7 +68,7 @@
 
 
 NPObject* JavaInstanceToNPObject(JavaInstance* instance) {
-    JavaNPObject* object = reinterpret_cast<JavaNPObject*>(NPN_CreateObject(0, &JavaNPObjectClass));
+    JavaNPObject* object = reinterpret_cast<JavaNPObject*>(_NPN_CreateObject(0, &JavaNPObjectClass));
     object->_instance = instance;
     return reinterpret_cast<NPObject*>(object);
 }
diff --git a/V8Binding/npapi/npruntime.h b/V8Binding/npapi/npruntime.h
index ec26680..b0ca9e4 100644
--- a/V8Binding/npapi/npruntime.h
+++ b/V8Binding/npapi/npruntime.h
@@ -308,7 +308,7 @@
     function it is the responsibility of that implementation to set the initial retain
     count to 1.
 */
-NPObject *NPN_CreateObject(NPP npp, NPClass *aClass);
+NPObject *_NPN_CreateObject(NPP npp, NPClass *aClass);
 
 /*
     Increment the NPObject's reference count.
@@ -320,7 +320,7 @@
     count goes to zero, the class's destroy function is invoke if
     specified, otherwise the object is freed directly.
 */
-void NPN_ReleaseObject (NPObject *obj);
+void _NPN_ReleaseObject (NPObject *obj);
 
 /*
     Functions to access script objects represented by NPObject.
diff --git a/WebCore/Android.v8.mk b/WebCore/Android.v8.mk
index bf3d131..cd1b423 100644
--- a/WebCore/Android.v8.mk
+++ b/WebCore/Android.v8.mk
@@ -143,6 +143,7 @@
 	css/MediaQuery.cpp \
 	css/MediaQueryEvaluator.cpp \
 	css/MediaQueryExp.cpp \
+	css/RGBColor.cpp \
     
 ifeq ($(ENABLE_SVG), true)
 LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
diff --git a/WebCore/loader/icon/IconDatabase.cpp b/WebCore/loader/icon/IconDatabase.cpp
index 9c026d7..1835f69 100644
--- a/WebCore/loader/icon/IconDatabase.cpp
+++ b/WebCore/loader/icon/IconDatabase.cpp
@@ -39,11 +39,16 @@
 #include "SQLiteStatement.h"
 #include "SQLiteTransaction.h"
 #include "SuddenTermination.h"
-#include <runtime/InitializeThreading.h>
 #include <wtf/CurrentTime.h>
 #include <wtf/MainThread.h>
 #include <wtf/StdLibExtras.h>
 
+#if USE(JSC)
+#include <runtime/InitializeThreading.h>
+#elif USE(V8)
+#include "InitializeThreading.h"
+#endif
+
 // For methods that are meant to support API from the main thread - should not be called internally
 #define ASSERT_NOT_SYNC_THREAD() ASSERT(!m_syncThreadRunning || !IS_ICON_SYNC_THREAD())
 
@@ -93,7 +98,11 @@
 IconDatabase* iconDatabase()
 {
     if (!sharedIconDatabase) {
+#if USE(JSC)
         JSC::initializeThreading();
+#elif USE(V8)
+        V8::initializeThreading();
+#endif
         sharedIconDatabase = new IconDatabase;
     }
     return sharedIconDatabase;
diff --git a/WebCore/storage/Database.cpp b/WebCore/storage/Database.cpp
index 2292a0a..5504cb1 100644
--- a/WebCore/storage/Database.cpp
+++ b/WebCore/storage/Database.cpp
@@ -56,6 +56,8 @@
 #if USE(JSC)
 #include "JSDOMWindow.h"
 #include <runtime/InitializeThreading.h>
+#elif USE(V8)
+#include "InitializeThreading.h"
 #endif
 
 namespace WebCore {
@@ -147,6 +149,9 @@
     JSC::initializeThreading();
     // Database code violates the normal JSCore contract by calling jsUnprotect from a secondary thread, and thus needs additional locking.
     JSDOMWindow::commonJSGlobalData()->heap.setGCProtectNeedsLocking();
+#elif USE(V8)
+    // TODO(benm): do we need the extra locking in V8 too? (See JSC comment above)
+    V8::initializeThreading();
 #endif
 
     m_guid = guidForOriginAndName(m_securityOrigin->toString(), name);
diff --git a/WebKit/android/jni/WebCoreFrameBridge.cpp b/WebKit/android/jni/WebCoreFrameBridge.cpp
index 6048c98..d042c92 100644
--- a/WebKit/android/jni/WebCoreFrameBridge.cpp
+++ b/WebKit/android/jni/WebCoreFrameBridge.cpp
@@ -26,7 +26,7 @@
 #define LOG_TAG "webcoreglue"
 
 #include <config.h>
-#include <runtime/InitializeThreading.h>
+
 #include <wtf/Platform.h>
 
 #include "android_graphics.h"
@@ -63,8 +63,10 @@
 #if USE(JSC)
 #include "GCController.h"
 #include "JSDOMWindow.h"
+#include <runtime/InitializeThreading.h>
 #include <runtime/JSLock.h>
 #elif USE(V8)
+#include "InitializeThreading.h"
 #include "jni_npobject.h"
 #include "jni_instance.h"
 #endif  // USE(JSC)
@@ -716,8 +718,11 @@
 
 static void CreateFrame(JNIEnv* env, jobject obj, jobject javaview, jobject jAssetManager, jobject historyList)
 {
-    // TODO(andreip): Where did the V8InitializeThreading.h disappear?
+#if USE(JSC)
     JSC::initializeThreading();
+#elif USE(V8)
+    V8::initializeThreading();
+#endif
 
 #ifdef ANDROID_INSTRUMENT
     TimeCounterAuto counter(TimeCounter::NativeCallbackTimeCounter);
@@ -1087,7 +1092,7 @@
         // the ref count when the object is not reachable from JavaScript
         // side. Code here must release the reference count increased by
         // JavaInstanceToNPObject.
-        NPN_ReleaseObject(obj);
+        _NPN_ReleaseObject(obj);
         JSC::Bindings::releaseCharactersForJString(interfaceName, name);
     }
 #endif