diff --git a/WebCore/bindings/js/SerializedScriptValue.cpp b/WebCore/bindings/js/SerializedScriptValue.cpp
index 92c8936..f2290888 100644
--- a/WebCore/bindings/js/SerializedScriptValue.cpp
+++ b/WebCore/bindings/js/SerializedScriptValue.cpp
@@ -44,6 +44,8 @@
 #include <runtime/ExceptionHelpers.h>
 #include <runtime/JSLock.h>
 #include <runtime/PropertyNameArray.h>
+#include <runtime/RegExp.h>
+#include <runtime/RegExpObject.h>
 #include <wtf/ByteArray.h>
 #include <wtf/HashTraits.h>
 #include <wtf/Vector.h>
@@ -83,6 +85,7 @@
     BlobTag = 15,
     StringTag = 16,
     EmptyStringTag = 17,
+    RegExpTag = 18,
     ErrorTag = 255
 };
 
@@ -145,6 +148,8 @@
  * Blob :-
  *    BlobTag <url:StringData><type:StringData><size:long long>
  *
+ * RegExp :-
+ *    RegExpTag <pattern:StringData><flags:StringData>
  */
 
 class CloneBase {
@@ -389,6 +394,21 @@
                 write(data->data()->data()->data(), data->data()->length());
                 return true;
             }
+            if (obj->inherits(&RegExpObject::info)) {
+                RegExpObject* regExp = asRegExpObject(obj);
+                char flags[3];
+                int flagCount = 0;
+                if (regExp->regExp()->global())
+                    flags[flagCount++] = 'g';
+                if (regExp->regExp()->ignoreCase())
+                    flags[flagCount++] = 'i';
+                if (regExp->regExp()->multiline())
+                    flags[flagCount++] = 'm';
+                write(RegExpTag);
+                write(regExp->regExp()->pattern());
+                write(UString(flags, flagCount));
+                return true;
+            }
 
             CallData unusedData;
             if (getCallData(value, unusedData) == CallTypeNone)
@@ -1066,6 +1086,16 @@
         }
         case EmptyStringTag:
             return jsEmptyString(&m_exec->globalData());
+        case RegExpTag: {
+            Identifier pattern;
+            if (!readStringData(pattern))
+                return JSValue();
+            Identifier flags;
+            if (!readStringData(flags))
+                return JSValue();
+            RefPtr<RegExp> regExp = RegExp::create(&m_exec->globalData(), pattern.ustring(), flags.ustring());
+            return new (m_exec) RegExpObject(m_exec->lexicalGlobalObject(), m_globalObject->regExpStructure(), regExp); 
+        }
         default:
             m_ptr--; // Push the tag back
             return JSValue();
