Changeset 139599 in webkit
- Timestamp:
- Jan 14, 2013 2:44:47 AM (11 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r139598 r139599 1 2013-01-14 Kentaro Hara <haraken@chromium.org> 2 3 [V8] Call Isolate::GetCurrent() in a callback from WebCore 4 https://bugs.webkit.org/show_bug.cgi?id=106766 5 6 Reviewed by Adam Barth. 7 8 The objective is to pass an Isolate everywhere. 9 Given that a callback from WebCore is an entry point to V8, 10 we can call Isolate::GetCurrent() at the head of the callback 11 and pass it to other places. (In practice, handleEvent() is 12 the only callback used in the current WebKit.) 13 14 No tests. No change in behavior. 15 16 * bindings/scripts/CodeGeneratorV8.pm: 17 (GenerateCallbackImplementation): 18 (NativeToJSValue): 19 * bindings/scripts/test/V8/V8TestCallback.cpp: 20 (WebCore::V8TestCallback::callbackWithNoParam): 21 (WebCore::V8TestCallback::callbackWithClass1Param): 22 (WebCore::V8TestCallback::callbackWithClass2Param): 23 (WebCore::V8TestCallback::callbackWithStringList): 24 (WebCore::V8TestCallback::callbackWithBoolean): 25 (WebCore::V8TestCallback::callbackRequiresThisToPass): 26 1 27 2013-01-14 Tommy Widenflycht <tommyw@google.com> 2 28 -
trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm
r139469 r139599 3380 3380 foreach my $param (@params) { 3381 3381 my $paramName = $param->name; 3382 push(@implContent, " v8::Handle<v8::Value> ${paramName}Handle = " . NativeToJSValue($param, $paramName ) . ";\n");3382 push(@implContent, " v8::Handle<v8::Value> ${paramName}Handle = " . NativeToJSValue($param, $paramName, "v8::Handle<v8::Object>()", "v8::Isolate::GetCurrent()") . ";\n"); 3383 3383 push(@implContent, " if (${paramName}Handle.IsEmpty()) {\n"); 3384 3384 push(@implContent, " if (!isScriptControllerTerminating())\n"); … … 4024 4024 my $value = shift; 4025 4025 my $getCreationContext = shift; 4026 my $getCreationContextArg = $getCreationContext ? ", $getCreationContext" : "";4027 4026 my $getIsolate = shift; 4028 my $getIsolateArg = $getIsolate ? ", $getIsolate" : "";4029 4027 my $getHolderContainer = shift; 4030 4028 my $getHolderContainerArg = $getHolderContainer ? ", $getHolderContainer" : ""; … … 4032 4030 my $getScriptWrappableArg = $getScriptWrappable ? ", $getScriptWrappable" : ""; 4033 4031 my $returnHandleType = shift; 4032 my $returnHandleTypeArg = $returnHandleType ? ", $returnHandleType" : ""; 4034 4033 4035 4034 my $type = $signature->type; … … 4043 4042 if ($signature->extendedAttributes->{"Reflect"} and ($type eq "unsigned long" or $type eq "unsigned short")) { 4044 4043 $value =~ s/getUnsignedIntegralAttribute/getIntegralAttribute/g; 4045 return "v8UnsignedInteger(std::max(0, " . $value . ") $getIsolateArg)";4044 return "v8UnsignedInteger(std::max(0, " . $value . "), $getIsolate)"; 4046 4045 } 4047 4046 … … 4049 4048 # we use v8Integer() which has a fast small integer conversion check. 4050 4049 my $nativeType = GetNativeType($type); 4051 return "v8Integer($value $getIsolateArg)" if $nativeType eq "int";4052 return "v8UnsignedInteger($value $getIsolateArg)" if $nativeType eq "unsigned";4053 4054 return "v8DateOrNull($value $getIsolateArg)" if $type eq "Date";4050 return "v8Integer($value, $getIsolate)" if $nativeType eq "int"; 4051 return "v8UnsignedInteger($value, $getIsolate)" if $nativeType eq "unsigned"; 4052 4053 return "v8DateOrNull($value, $getIsolate)" if $type eq "Date"; 4055 4054 # long long and unsigned long long are not representable in ECMAScript. 4056 4055 return "v8::Number::New(static_cast<double>($value))" if $type eq "long long" or $type eq "unsigned long long" or $type eq "DOMTimeStamp"; … … 4061 4060 my $conv = $signature->extendedAttributes->{"TreatReturnedNullStringAs"}; 4062 4061 if (defined $conv) { 4063 return "v8StringOrNull($value $getIsolateArg, $returnHandleType)" if $conv eq "Null";4064 return "v8StringOrUndefined($value $getIsolateArg, $returnHandleType)" if $conv eq "Undefined";4062 return "v8StringOrNull($value, $getIsolate$returnHandleTypeArg)" if $conv eq "Null"; 4063 return "v8StringOrUndefined($value, $getIsolate$returnHandleTypeArg)" if $conv eq "Undefined"; 4065 4064 4066 4065 die "Unknown value for TreatReturnedNullStringAs extended attribute"; 4067 4066 } 4068 return $getIsolate ? "v8String($value $getIsolateArg, $returnHandleType)" : "deprecatedV8String($value)";4067 return $getIsolate ? "v8String($value, $getIsolate$returnHandleTypeArg)" : "deprecatedV8String($value)"; 4069 4068 } 4070 4069 … … 4082 4081 AddToImplIncludes("${arrayOrSequenceType}.h"); 4083 4082 } 4084 return "v8Array($ {value}${getIsolateArg})";4083 return "v8Array($value, $getIsolate)"; 4085 4084 } 4086 4085 … … 4091 4090 return "toV8Fast($value$getHolderContainerArg$getScriptWrappableArg)"; 4092 4091 } 4093 return "toV8($value $getCreationContextArg$getIsolateArg)";4092 return "toV8($value, $getCreationContext, $getIsolate)"; 4094 4093 } 4095 4094 … … 4111 4110 return "toV8Fast($value$getHolderContainerArg$getScriptWrappableArg)"; 4112 4111 } 4113 return "toV8($value $getCreationContextArg$getIsolateArg)";4112 return "toV8($value, $getCreationContext, $getIsolate)"; 4114 4113 } 4115 4114 -
trunk/Source/WebCore/bindings/scripts/test/V8/V8TestCallback.cpp
r138841 r139599 86 86 v8::Context::Scope scope(v8Context); 87 87 88 v8::Handle<v8::Value> class1ParamHandle = toV8(class1Param );88 v8::Handle<v8::Value> class1ParamHandle = toV8(class1Param, v8::Handle<v8::Object>(), v8::Isolate::GetCurrent()); 89 89 if (class1ParamHandle.IsEmpty()) { 90 90 if (!isScriptControllerTerminating()) … … 114 114 v8::Context::Scope scope(v8Context); 115 115 116 v8::Handle<v8::Value> class2ParamHandle = toV8(class2Param );116 v8::Handle<v8::Value> class2ParamHandle = toV8(class2Param, v8::Handle<v8::Object>(), v8::Isolate::GetCurrent()); 117 117 if (class2ParamHandle.IsEmpty()) { 118 118 if (!isScriptControllerTerminating()) … … 120 120 return true; 121 121 } 122 v8::Handle<v8::Value> strArgHandle = deprecatedV8String(strArg);122 v8::Handle<v8::Value> strArgHandle = v8String(strArg, v8::Isolate::GetCurrent()); 123 123 if (strArgHandle.IsEmpty()) { 124 124 if (!isScriptControllerTerminating()) … … 149 149 v8::Context::Scope scope(v8Context); 150 150 151 v8::Handle<v8::Value> listParamHandle = toV8(listParam );151 v8::Handle<v8::Value> listParamHandle = toV8(listParam, v8::Handle<v8::Object>(), v8::Isolate::GetCurrent()); 152 152 if (listParamHandle.IsEmpty()) { 153 153 if (!isScriptControllerTerminating()) … … 177 177 v8::Context::Scope scope(v8Context); 178 178 179 v8::Handle<v8::Value> boolParamHandle = v8Boolean(boolParam );179 v8::Handle<v8::Value> boolParamHandle = v8Boolean(boolParam, v8::Isolate::GetCurrent()); 180 180 if (boolParamHandle.IsEmpty()) { 181 181 if (!isScriptControllerTerminating()) … … 207 207 v8::Context::Scope scope(v8Context); 208 208 209 v8::Handle<v8::Value> class8ParamHandle = toV8(class8Param );209 v8::Handle<v8::Value> class8ParamHandle = toV8(class8Param, v8::Handle<v8::Object>(), v8::Isolate::GetCurrent()); 210 210 if (class8ParamHandle.IsEmpty()) { 211 211 if (!isScriptControllerTerminating()) … … 213 213 return true; 214 214 } 215 v8::Handle<v8::Value> thisClassParamHandle = toV8(thisClassParam );215 v8::Handle<v8::Value> thisClassParamHandle = toV8(thisClassParam, v8::Handle<v8::Object>(), v8::Isolate::GetCurrent()); 216 216 if (thisClassParamHandle.IsEmpty()) { 217 217 if (!isScriptControllerTerminating())
Note: See TracChangeset
for help on using the changeset viewer.