Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(61)

Side by Side Diff: Source/bindings/scripts/deprecated_code_generator_v8.pm

Issue 19230002: Use V8 implementation of TypedArrays and DataView in Blink (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright (C) 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> 1 # Copyright (C) 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org>
2 # Copyright (C) 2006 Anders Carlsson <andersca@mac.com> 2 # Copyright (C) 2006 Anders Carlsson <andersca@mac.com>
3 # Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> 3 # Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
4 # Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org> 4 # Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org>
5 # Copyright (C) 2006 Apple Computer, Inc. 5 # Copyright (C) 2006 Apple Computer, Inc.
6 # Copyright (C) 2007, 2008, 2009, 2012 Google Inc. 6 # Copyright (C) 2007, 2008, 2009, 2012 Google Inc.
7 # Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> 7 # Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au>
8 # Copyright (C) Research In Motion Limited 2010. All rights reserved. 8 # Copyright (C) Research In Motion Limited 2010. All rights reserved.
9 # Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) 9 # Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
10 # Copyright (C) 2012 Ericsson AB. All rights reserved. 10 # Copyright (C) 2012 Ericsson AB. All rights reserved.
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 430
431 return if SkipIncludeHeader($type); 431 return if SkipIncludeHeader($type);
432 432
433 # Default includes 433 # Default includes
434 if ($type eq "EventListener") { 434 if ($type eq "EventListener") {
435 AddToImplIncludes("core/dom/EventListener.h"); 435 AddToImplIncludes("core/dom/EventListener.h");
436 } elsif ($type eq "SerializedScriptValue") { 436 } elsif ($type eq "SerializedScriptValue") {
437 AddToImplIncludes("bindings/v8/SerializedScriptValue.h"); 437 AddToImplIncludes("bindings/v8/SerializedScriptValue.h");
438 } elsif ($type eq "any" || IsCallbackFunctionType($type)) { 438 } elsif ($type eq "any" || IsCallbackFunctionType($type)) {
439 AddToImplIncludes("bindings/v8/ScriptValue.h"); 439 AddToImplIncludes("bindings/v8/ScriptValue.h");
440 } elsif ($type eq "ArrayBuffer") { 440 } elsif (IsTypedArrayType($type)) {
441 AddToImplIncludes("bindings/v8/custom/V8ArrayBufferCustom.h"); 441 AddToImplIncludes("bindings/v8/custom/V8${type}Custom.h");
442 } else { 442 } else {
443 AddToImplIncludes("V8${type}.h"); 443 AddToImplIncludes("V8${type}.h");
444 } 444 }
445 } 445 }
446 446
447 sub HeaderFilesForInterface 447 sub HeaderFilesForInterface
448 { 448 {
449 my $interfaceName = shift; 449 my $interfaceName = shift;
450 my $implClassName = shift; 450 my $implClassName = shift;
451 451
452 my @includes = (); 452 my @includes = ();
453 if (IsTypedArrayType($interfaceName) or $interfaceName eq "ArrayBuffer") { 453 if (IsTypedArrayType($interfaceName)) {
454 push(@includes, "wtf/${interfaceName}.h"); 454 push(@includes, "wtf/${interfaceName}.h");
455 } elsif (!SkipIncludeHeader($interfaceName)) { 455 } elsif (!SkipIncludeHeader($interfaceName)) {
456 my $idlFilename = IDLFileForInterface($interfaceName) or die("Could NOT find IDL file for interface \"$interfaceName\" $!\n"); 456 my $idlFilename = IDLFileForInterface($interfaceName) or die("Could NOT find IDL file for interface \"$interfaceName\" $!\n");
457 my $idlRelPath= "bindings/" . File::Spec->abs2rel($idlFilename, $sourceR oot); 457 my $idlRelPath= "bindings/" . File::Spec->abs2rel($idlFilename, $sourceR oot);
458 push(@includes, dirname($idlRelPath) . "/" . $implClassName . ".h"); 458 push(@includes, dirname($idlRelPath) . "/" . $implClassName . ".h");
459 } 459 }
460 return @includes; 460 return @includes;
461 } 461 }
462 462
463 sub NeedsOpaqueRootForGC 463 sub NeedsOpaqueRootForGC
(...skipping 2264 matching lines...) Expand 10 before | Expand all | Expand 10 after
2728 } 2728 }
2729 2729
2730 $code .= <<END; 2730 $code .= <<END;
2731 return true; 2731 return true;
2732 } 2732 }
2733 2733
2734 END 2734 END
2735 $implementation{nameSpaceWebCore}->add($code); 2735 $implementation{nameSpaceWebCore}->add($code);
2736 } 2736 }
2737 2737
2738 sub GenerateTypedArrayConstructor
2739 {
2740 my $interface = shift;
2741 my $implClassName = GetImplName($interface);
2742 my $v8ClassName = GetV8ClassName($interface);
2743
2744 my ($nativeType, $arrayType) = GetNativeTypeOfTypedArray($interface);
2745 AddToImplIncludes("bindings/v8/custom/V8ArrayBufferViewCustom.h");
2746
2747 $implementation{nameSpaceInternal}->add(<<END);
2748 static void constructor(const v8::FunctionCallbackInfo<v8::Value>& args)
2749 {
2750 return constructWebGLArray<$implClassName, ${v8ClassName}, $nativeType>(args , &${v8ClassName}::info, $arrayType);
2751 }
2752
2753 END
2754 }
2755
2756 sub GenerateNamedConstructor 2738 sub GenerateNamedConstructor
2757 { 2739 {
2758 my $function = shift; 2740 my $function = shift;
2759 my $interface = shift; 2741 my $interface = shift;
2760 2742
2761 my $implClassName = GetImplName($interface); 2743 my $implClassName = GetImplName($interface);
2762 my $v8ClassName = GetV8ClassName($interface); 2744 my $v8ClassName = GetV8ClassName($interface);
2763 my $raisesExceptions = $function->extendedAttributes->{"RaisesException"}; 2745 my $raisesExceptions = $function->extendedAttributes->{"RaisesException"};
2764 if ($interface->extendedAttributes->{"ConstructorRaisesException"}) { 2746 if ($interface->extendedAttributes->{"ConstructorRaisesException"}) {
2765 $raisesExceptions = 1; 2747 $raisesExceptions = 1;
(...skipping 2254 matching lines...) Expand 10 before | Expand all | Expand 10 after
5020 return "Dictionary" if $type eq "Dictionary"; 5002 return "Dictionary" if $type eq "Dictionary";
5021 5003
5022 return "RefPtr<DOMStringList>" if $type eq "DOMStringList"; 5004 return "RefPtr<DOMStringList>" if $type eq "DOMStringList";
5023 return "RefPtr<MediaQueryListListener>" if $type eq "MediaQueryListListener" ; 5005 return "RefPtr<MediaQueryListListener>" if $type eq "MediaQueryListListener" ;
5024 return "RefPtr<NodeFilter>" if $type eq "NodeFilter"; 5006 return "RefPtr<NodeFilter>" if $type eq "NodeFilter";
5025 return "RefPtr<SerializedScriptValue>" if $type eq "SerializedScriptValue"; 5007 return "RefPtr<SerializedScriptValue>" if $type eq "SerializedScriptValue";
5026 return "RefPtr<XPathNSResolver>" if $type eq "XPathNSResolver"; 5008 return "RefPtr<XPathNSResolver>" if $type eq "XPathNSResolver";
5027 5009
5028 die "UnionType is not supported" if IsUnionType($type); 5010 die "UnionType is not supported" if IsUnionType($type);
5029 5011
5030 if ($type eq "ArrayBuffer") { 5012 if (IsTypedArrayType($type)) {
5031 return $isParameter ? "ArrayBuffer*" : "RefPtr<ArrayBuffer>"; 5013 return $isParameter ? "${type}*" : "RefPtr<${type}>";
5032 } 5014 }
5033 5015
5034 # We need to check [ImplementedAs] extended attribute for wrapper types. 5016 # We need to check [ImplementedAs] extended attribute for wrapper types.
5035 if (IsWrapperType($type)) { 5017 if (IsWrapperType($type)) {
5036 my $interface = ParseInterface($type); 5018 my $interface = ParseInterface($type);
5037 my $implClassName = GetImplName($interface); 5019 my $implClassName = GetImplName($interface);
5038 return $isParameter ? "${implClassName}*" : "RefPtr<${implClassName}>"; 5020 return $isParameter ? "${implClassName}*" : "RefPtr<${implClassName}>";
5039 } 5021 }
5040 return "RefPtr<${type}>" if IsRefPtrType($type) and not $isParameter; 5022 return "RefPtr<${type}>" if IsRefPtrType($type) and not $isParameter;
5041 5023
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
5149 5131
5150 if ($type eq "MediaQueryListListener") { 5132 if ($type eq "MediaQueryListListener") {
5151 AddToImplIncludes("core/css/MediaQueryListListener.h"); 5133 AddToImplIncludes("core/css/MediaQueryListListener.h");
5152 return "MediaQueryListListener::create(" . $value . ")"; 5134 return "MediaQueryListListener::create(" . $value . ")";
5153 } 5135 }
5154 5136
5155 if ($type eq "EventTarget") { 5137 if ($type eq "EventTarget") {
5156 return "V8DOMWrapper::isDOMWrapper($value) ? toWrapperTypeInfo(v8::Handl e<v8::Object>::Cast($value))->toEventTarget(v8::Handle<v8::Object>::Cast($value) ) : 0"; 5138 return "V8DOMWrapper::isDOMWrapper($value) ? toWrapperTypeInfo(v8::Handl e<v8::Object>::Cast($value))->toEventTarget(v8::Handle<v8::Object>::Cast($value) ) : 0";
5157 } 5139 }
5158 5140
5159 if ($type eq "ArrayBuffer") { 5141 if (IsTypedArrayType($type)) {
5160 AddIncludesForType($type); 5142 AddIncludesForType($type);
5161 return "$value->IsArrayBuffer() ? V8ArrayBuffer::toNative(v8::Handle<v8: :ArrayBuffer>::Cast($value)) : 0" 5143 return "$value->Is${type}() ? V8${type}::toNative(v8::Handle<v8::${type} >::Cast($value)) : 0"
5162 } 5144 }
5163 5145
5164 if ($type eq "XPathNSResolver") { 5146 if ($type eq "XPathNSResolver") {
5165 return "toXPathNSResolver($value, $getIsolate)"; 5147 return "toXPathNSResolver($value, $getIsolate)";
5166 } 5148 }
5167 5149
5168 my $arrayOrSequenceType = GetArrayOrSequenceType($type); 5150 my $arrayOrSequenceType = GetArrayOrSequenceType($type);
5169 5151
5170 if ($arrayOrSequenceType) { 5152 if ($arrayOrSequenceType) {
5171 if (IsRefPtrType($arrayOrSequenceType)) { 5153 if (IsRefPtrType($arrayOrSequenceType)) {
(...skipping 13 matching lines...) Expand all
5185 { 5167 {
5186 my $function = shift; 5168 my $function = shift;
5187 my $count = @{$function->parameters}; 5169 my $count = @{$function->parameters};
5188 my $name = $function->name; 5170 my $name = $function->name;
5189 my $code = " const int ${name}Argc = ${count};\n" . 5171 my $code = " const int ${name}Argc = ${count};\n" .
5190 " v8::Handle<v8::FunctionTemplate> ${name}Argv[${name}Argc] = { "; 5172 " v8::Handle<v8::FunctionTemplate> ${name}Argv[${name}Argc] = { ";
5191 my $first = 1; 5173 my $first = 1;
5192 foreach my $parameter (@{$function->parameters}) { 5174 foreach my $parameter (@{$function->parameters}) {
5193 if ($first) { $first = 0; } 5175 if ($first) { $first = 0; }
5194 else { $code .= ", "; } 5176 else { $code .= ", "; }
5195 if (IsWrapperType($parameter->type) && $parameter->type ne "ArrayBuffer" ) { 5177 if (IsWrapperType($parameter->type) && not IsTypedArrayType($parameter-> type)) {
5196 if ($parameter->type eq "XPathNSResolver") { 5178 if ($parameter->type eq "XPathNSResolver") {
5197 # Special case for XPathNSResolver. All other browsers accepts a callable, 5179 # Special case for XPathNSResolver. All other browsers accepts a callable,
5198 # so, even though it's against IDL, accept objects here. 5180 # so, even though it's against IDL, accept objects here.
5199 $code .= "v8::Handle<v8::FunctionTemplate>()"; 5181 $code .= "v8::Handle<v8::FunctionTemplate>()";
5200 } else { 5182 } else {
5201 my $type = $parameter->type; 5183 my $type = $parameter->type;
5202 my $arrayOrSequenceType = GetArrayOrSequenceType($type); 5184 my $arrayOrSequenceType = GetArrayOrSequenceType($type);
5203 5185
5204 if ($arrayOrSequenceType) { 5186 if ($arrayOrSequenceType) {
5205 if (IsRefPtrType($arrayOrSequenceType)) { 5187 if (IsRefPtrType($arrayOrSequenceType)) {
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
5274 return 0 if IsEnumType($type); 5256 return 0 if IsEnumType($type);
5275 return 0 if IsPrimitiveType($type); 5257 return 0 if IsPrimitiveType($type);
5276 return 0 if $type eq "DOMString"; 5258 return 0 if $type eq "DOMString";
5277 return !$nonWrapperTypes{$type}; 5259 return !$nonWrapperTypes{$type};
5278 } 5260 }
5279 5261
5280 sub IsCallbackInterface 5262 sub IsCallbackInterface
5281 { 5263 {
5282 my $type = shift; 5264 my $type = shift;
5283 return 0 unless IsWrapperType($type); 5265 return 0 unless IsWrapperType($type);
5284 return 0 if $type eq "ArrayBuffer"; 5266 return 0 if IsTypedArrayType($type);
5285 5267
5286 my $idlFile = IDLFileForInterface($type) 5268 my $idlFile = IDLFileForInterface($type)
5287 or die("Could NOT find IDL file for interface \"$type\"!\n"); 5269 or die("Could NOT find IDL file for interface \"$type\"!\n");
5288 5270
5289 open FILE, "<", $idlFile; 5271 open FILE, "<", $idlFile;
5290 my @lines = <FILE>; 5272 my @lines = <FILE>;
5291 close FILE; 5273 close FILE;
5292 5274
5293 my $fileContents = join('', @lines); 5275 my $fileContents = join('', @lines);
5294 return ($fileContents =~ /callback\s+interface\s+(\w+)/gs); 5276 return ($fileContents =~ /callback\s+interface\s+(\w+)/gs);
(...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after
6025 if ($currentInterface->extendedAttributes->{$extendedAttribute}) { 6007 if ($currentInterface->extendedAttributes->{$extendedAttribute}) {
6026 $found = 1; 6008 $found = 1;
6027 } 6009 }
6028 return 1 if $found; 6010 return 1 if $found;
6029 }, 0); 6011 }, 0);
6030 6012
6031 return $found; 6013 return $found;
6032 } 6014 }
6033 6015
6034 1; 6016 1;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698