| Index: Source/bindings/scripts/code_generator_v8.pm | 
| diff --git a/Source/bindings/scripts/code_generator_v8.pm b/Source/bindings/scripts/code_generator_v8.pm | 
| index 345632de4ca27269b6d43c547ee7cb8cb3eeffc8..3e132f7b2de9d6861a72cafb487756b31e083b50 100644 | 
| --- a/Source/bindings/scripts/code_generator_v8.pm | 
| +++ b/Source/bindings/scripts/code_generator_v8.pm | 
| @@ -865,15 +865,15 @@ class ${nativeType}; | 
| v8::Handle<v8::Value> toV8(${nativeType}*, v8::Handle<v8::Object> creationContext, v8::Isolate*); | 
|  | 
| template<class CallbackInfo> | 
| -inline void v8SetReturnValue(const CallbackInfo& callbackInfo, ${nativeType}* impl, v8::Handle<v8::Object> creationContext) | 
| +inline void v8SetReturnValue(const CallbackInfo& callbackInfo, ${nativeType}* impl) | 
| { | 
| -    v8SetReturnValue(callbackInfo, toV8(impl, creationContext, callbackInfo.GetIsolate())); | 
| +    v8SetReturnValue(callbackInfo, toV8(impl, callbackInfo.Holder(), callbackInfo.GetIsolate())); | 
| } | 
|  | 
| template<class CallbackInfo> | 
| -inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, ${nativeType}* impl, v8::Handle<v8::Object> creationContext) | 
| +inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, ${nativeType}* impl) | 
| { | 
| -     v8SetReturnValue(callbackInfo, toV8(impl, creationContext, callbackInfo.GetIsolate())); | 
| +     v8SetReturnValue(callbackInfo, toV8(impl, callbackInfo.Holder(), callbackInfo.GetIsolate())); | 
| } | 
|  | 
| template<class CallbackInfo, class Wrappable> | 
| @@ -917,7 +917,7 @@ inline v8::Handle<v8::Value> toV8(${nativeType}* impl, v8::Handle<v8::Object> cr | 
| } | 
|  | 
| template<typename CallbackInfo> | 
| -inline void v8SetReturnValue(const CallbackInfo& callbackInfo, ${nativeType}* impl, v8::Handle<v8::Object> creationContext) | 
| +inline void v8SetReturnValue(const CallbackInfo& callbackInfo, ${nativeType}* impl) | 
| { | 
| if (UNLIKELY(!impl)) { | 
| v8SetReturnValueNull(callbackInfo); | 
| @@ -925,12 +925,12 @@ inline void v8SetReturnValue(const CallbackInfo& callbackInfo, ${nativeType}* im | 
| } | 
| if (DOMDataStore::setReturnValueFromWrapper<${v8ClassName}>(callbackInfo.GetReturnValue(), impl)) | 
| return; | 
| -    v8::Handle<v8::Object> wrapper = wrap(impl, creationContext, callbackInfo.GetIsolate()); | 
| +    v8::Handle<v8::Object> wrapper = wrap(impl, callbackInfo.Holder(), callbackInfo.GetIsolate()); | 
| v8SetReturnValue(callbackInfo, wrapper); | 
| } | 
|  | 
| template<typename CallbackInfo> | 
| -inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, ${nativeType}* impl, v8::Handle<v8::Object> creationContext) | 
| +inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, ${nativeType}* impl) | 
| { | 
| ASSERT(worldType(callbackInfo.GetIsolate()) == MainWorld); | 
| if (UNLIKELY(!impl)) { | 
| @@ -939,7 +939,7 @@ inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, ${nat | 
| } | 
| if (DOMDataStore::setReturnValueFromWrapperForMainWorld<${v8ClassName}>(callbackInfo.GetReturnValue(), impl)) | 
| return; | 
| -    v8::Handle<v8::Value> wrapper = wrap(impl, creationContext, callbackInfo.GetIsolate()); | 
| +    v8::Handle<v8::Value> wrapper = wrap(impl, callbackInfo.Holder(), callbackInfo.GetIsolate()); | 
| v8SetReturnValue(callbackInfo, wrapper); | 
| } | 
|  | 
| @@ -966,15 +966,15 @@ inline v8::Handle<v8::Value> toV8(PassRefPtr<${nativeType} > impl, v8::Handle<v8 | 
| } | 
|  | 
| template<class CallbackInfo> | 
| -inline void v8SetReturnValue(const CallbackInfo& callbackInfo, PassRefPtr<${nativeType} > impl, v8::Handle<v8::Object> creationContext) | 
| +inline void v8SetReturnValue(const CallbackInfo& callbackInfo, PassRefPtr<${nativeType} > impl) | 
| { | 
| -    v8SetReturnValue(callbackInfo, impl.get(), creationContext); | 
| +    v8SetReturnValue(callbackInfo, impl.get()); | 
| } | 
|  | 
| template<class CallbackInfo> | 
| -inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, PassRefPtr<${nativeType} > impl, v8::Handle<v8::Object> creationContext) | 
| +inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, PassRefPtr<${nativeType} > impl) | 
| { | 
| -    v8SetReturnValueForMainWorld(callbackInfo, impl.get(), creationContext); | 
| +    v8SetReturnValueForMainWorld(callbackInfo, impl.get()); | 
| } | 
|  | 
| template<class CallbackInfo, class Wrappable> | 
| @@ -1603,7 +1603,7 @@ END | 
| my $svgNativeType = GetSVGTypeNeedingTearOff($attrType); | 
| # Convert from abstract SVGProperty to real type, so the right toJS() method can be invoked. | 
| if ($forMainWorldSuffix eq "ForMainWorld") { | 
| -            $code .= "    v8SetReturnValueForMainWorld(info, static_cast<$svgNativeType*>($expression), info.Holder());\n"; | 
| +            $code .= "    v8SetReturnValueForMainWorld(info, static_cast<$svgNativeType*>($expression));\n"; | 
| } else { | 
| $code .= "    v8SetReturnValueFast(info, static_cast<$svgNativeType*>($expression), imp);\n"; | 
| } | 
| @@ -1638,7 +1638,7 @@ END | 
| $wrappedValue = "WTF::getPtr(${tearOffType}::create($expression))"; | 
| } | 
| if ($forMainWorldSuffix eq "ForMainWorld") { | 
| -            $code .= "    v8SetReturnValueForMainWorld(info, $wrappedValue, info.Holder());\n"; | 
| +            $code .= "    v8SetReturnValueForMainWorld(info, $wrappedValue);\n"; | 
| } else { | 
| $code .= "    v8SetReturnValueFast(info, $wrappedValue, imp);\n"; | 
| } | 
| @@ -1673,7 +1673,7 @@ END | 
| $code .= "    EventListener* jsValue = ${functionName}(" . join(", ", @arguments) . ");\n"; | 
| $code .= "    v8SetReturnValue(info, jsValue ? v8::Handle<v8::Value>(V8AbstractEventListener::cast(jsValue)->getListenerObject(imp->executionContext())) : v8::Handle<v8::Value>(v8::Null(info.GetIsolate())));\n"; | 
| } else { | 
| -        my $nativeValue = NativeToJSValue($attribute->type, $attribute->extendedAttributes, $expression, "    ", "", "info.Holder()", "info.GetIsolate()", "info", "imp", $forMainWorldSuffix, "return"); | 
| +        my $nativeValue = NativeToJSValue($attribute->type, $attribute->extendedAttributes, $expression, "    ", "", "info.GetIsolate()", "info", "imp", $forMainWorldSuffix, "return"); | 
| $code .= "${nativeValue}\n"; | 
| } | 
|  | 
| @@ -3457,7 +3457,7 @@ sub GenerateImplementationIndexedPropertyGetter | 
| my $nativeValue = "element"; | 
| $nativeValue .= ".release()" if (IsRefPtrType($returnType)); | 
| my $isNull = GenerateIsNullExpression($returnType, "element"); | 
| -    my $returnJSValueCode = NativeToJSValue($indexedGetterFunction->type, $indexedGetterFunction->extendedAttributes, $nativeValue, "    ", "", "info.Holder()", "info.GetIsolate()", "info", "collection", "", "return"); | 
| +    my $returnJSValueCode = NativeToJSValue($indexedGetterFunction->type, $indexedGetterFunction->extendedAttributes, $nativeValue, "    ", "", "info.GetIsolate()", "info", "collection", "", "return"); | 
| my $raisesExceptions = $indexedGetterFunction->extendedAttributes->{"RaisesException"}; | 
| my $methodCallCode = GenerateMethodCall($returnType, "element", "collection->${methodName}", "index", $raisesExceptions); | 
| my $getterCode = "static void indexedPropertyGetter(uint32_t index, const v8::PropertyCallbackInfo<v8::Value>& info)\n"; | 
| @@ -3811,7 +3811,7 @@ sub GenerateImplementationNamedPropertyGetter | 
| my $isNull = GenerateIsNullExpression($returnType, "element"); | 
| my $nativeValue = "element"; | 
| $nativeValue .= ".release()" if (IsRefPtrType($returnType)); | 
| -    my $returnJSValueCode = NativeToJSValue($namedGetterFunction->type, $namedGetterFunction->extendedAttributes, $nativeValue, "    ", "", "info.Holder()", "info.GetIsolate()", "info", "collection", "", "return"); | 
| +    my $returnJSValueCode = NativeToJSValue($namedGetterFunction->type, $namedGetterFunction->extendedAttributes, $nativeValue, "    ", "", "info.GetIsolate()", "info", "collection", "", "return"); | 
| my $raisesExceptions = $namedGetterFunction->extendedAttributes->{"RaisesException"}; | 
| my $methodCallCode = GenerateMethodCall($returnType, "element", "collection->${methodName}", "propertyName", $raisesExceptions); | 
|  | 
| @@ -4874,7 +4874,7 @@ END | 
| @args = (); | 
| foreach my $param (@params) { | 
| my $paramName = $param->name; | 
| -                $code .= NativeToJSValue($param->type, $param->extendedAttributes, $paramName, "    ", "v8::Handle<v8::Value> ${paramName}Handle =", "v8::Handle<v8::Object>()", "isolate", "") . "\n"; | 
| +                $code .= NativeToJSValue($param->type, $param->extendedAttributes, $paramName, "    ", "v8::Handle<v8::Value> ${paramName}Handle =", "isolate", "") . "\n"; | 
| $code .= "    if (${paramName}Handle.IsEmpty()) {\n"; | 
| $code .= "        if (!isScriptControllerTerminating())\n"; | 
| $code .= "            CRASH();\n"; | 
| @@ -5208,12 +5208,12 @@ END | 
| # FIXME: Update for all ScriptWrappables. | 
| if (IsDOMNodeType($interfaceName)) { | 
| if ($forMainWorldSuffix eq "ForMainWorld") { | 
| -                $code .= $indent . "v8SetReturnValueForMainWorld(args, WTF::getPtr(${svgNativeType}::create($return), args.Holder()));\n"; | 
| +                $code .= $indent . "v8SetReturnValueForMainWorld(args, WTF::getPtr(${svgNativeType}::create($return)));\n"; | 
| } else { | 
| $code .= $indent . "v8SetReturnValueFast(args, WTF::getPtr(${svgNativeType}::create($return)), imp);\n"; | 
| } | 
| } else { | 
| -            $code .= $indent . "v8SetReturnValue${forMainWorldSuffix}(args, WTF::getPtr(${svgNativeType}::create($return)), args.Holder());\n"; | 
| +            $code .= $indent . "v8SetReturnValue${forMainWorldSuffix}(args, WTF::getPtr(${svgNativeType}::create($return)));\n"; | 
| } | 
| return $code; | 
| } | 
| @@ -5228,9 +5228,9 @@ END | 
| my $nativeValue; | 
| # FIXME: Update for all ScriptWrappables. | 
| if (IsDOMNodeType($interfaceName)) { | 
| -        $nativeValue = NativeToJSValue($function->type, $function->extendedAttributes, $return, $indent, "", "args.Holder()", "args.GetIsolate()", "args", "imp", $forMainWorldSuffix, "return"); | 
| +        $nativeValue = NativeToJSValue($function->type, $function->extendedAttributes, $return, $indent, "", "args.GetIsolate()", "args", "imp", $forMainWorldSuffix, "return"); | 
| } else { | 
| -        $nativeValue = NativeToJSValue($function->type, $function->extendedAttributes, $return, $indent, "", "args.Holder()", "args.GetIsolate()", "args", 0, $forMainWorldSuffix, "return"); | 
| +        $nativeValue = NativeToJSValue($function->type, $function->extendedAttributes, $return, $indent, "", "args.GetIsolate()", "args", 0, $forMainWorldSuffix, "return"); | 
| } | 
|  | 
| $code .= $nativeValue . "\n" if $nativeValue;  # Skip blank line for void return type | 
| @@ -5600,13 +5600,11 @@ sub NativeToJSValue | 
| my $nativeValue = shift; | 
| my $indent = shift;  # added before every line | 
| my $receiver = shift;  # "return" or "<variableName> =" | 
| -    my $getCreationContext = shift; | 
| my $getIsolate = shift; | 
| die "An Isolate is mandatory for native value => JS value conversion." unless $getIsolate; | 
| my $getCallbackInfo = shift || ""; | 
| -    my $getCallbackInfoArg = $getCallbackInfo ? ", $getCallbackInfo" : ""; | 
| +    my $creationContext = $getCallbackInfo ? "${getCallbackInfo}.Holder()" : "v8::Handle<v8::Object>()"; | 
| my $getScriptWrappable = shift || ""; | 
| -    my $getScriptWrappableArg = $getScriptWrappable ? ", $getScriptWrappable" : ""; | 
| my $forMainWorldSuffix = shift || ""; | 
| my $returnValueArg = shift || 0; | 
| my $isReturnValue = $returnValueArg eq "return"; | 
| @@ -5621,7 +5619,7 @@ sub NativeToJSValue | 
| my $unionMemberEnabledVariable = $nativeValue . $i . "Enabled"; | 
| my $unionMemberNativeValue = $unionMemberVariable; | 
| $unionMemberNativeValue .= ".release()" if (IsRefPtrType($unionMemberType)); | 
| -            my $returnJSValueCode = NativeToJSValue($unionMemberType, $extendedAttributes, $unionMemberNativeValue, $indent . "    ", $receiver, $getCreationContext, $getIsolate, $getCallbackInfo, $getScriptWrappable, $forMainWorldSuffix, $returnValueArg); | 
| +            my $returnJSValueCode = NativeToJSValue($unionMemberType, $extendedAttributes, $unionMemberNativeValue, $indent . "    ", $receiver, $getIsolate, $getCallbackInfo, $getScriptWrappable, $forMainWorldSuffix, $returnValueArg); | 
| my $code = ""; | 
| if ($isReturnValue) { | 
| $code .= "${indent}if (${unionMemberEnabledVariable}) {\n"; | 
| @@ -5745,14 +5743,14 @@ sub NativeToJSValue | 
| # FIXME: Use safe handles | 
| if ($isReturnValue) { | 
| if ($forMainWorldSuffix eq "ForMainWorld") { | 
| -                return "${indent}v8SetReturnValueForMainWorld(${getCallbackInfo}, $nativeValue, $getCallbackInfo.Holder());"; | 
| +                return "${indent}v8SetReturnValueForMainWorld(${getCallbackInfo}, $nativeValue);"; | 
| } | 
| -            return "${indent}v8SetReturnValueFast(${getCallbackInfo}, $nativeValue$getScriptWrappableArg);"; | 
| +            return "${indent}v8SetReturnValueFast(${getCallbackInfo}, $nativeValue, $getScriptWrappable);"; | 
| } | 
| } | 
| # FIXME: Use safe handles | 
| -    return "${indent}v8SetReturnValue(${getCallbackInfo}, $nativeValue, $getCreationContext);" if $isReturnValue; | 
| -    return "$indent$receiver toV8($nativeValue, $getCreationContext, $getIsolate);"; | 
| +    return "${indent}v8SetReturnValue(${getCallbackInfo}, $nativeValue);" if $isReturnValue; | 
| +    return "$indent$receiver toV8($nativeValue, $creationContext, $getIsolate);"; | 
| } | 
|  | 
| sub WriteData | 
|  |