Chromium Code Reviews| 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 8156add23434ce619e4a4b83634d9a5e23632014..0c0556f8bf6e46087848c6ea31c1c8b9be4afc01 100644 |
| --- a/Source/bindings/scripts/code_generator_v8.pm |
| +++ b/Source/bindings/scripts/code_generator_v8.pm |
| @@ -5429,6 +5429,7 @@ sub GetNativeType |
| my $type = shift; |
| my $extendedAttributes = shift; |
| my $isParameter = shift; |
| + my $isMember = shift; |
| my $svgNativeType = GetSVGTypeNeedingTearOff($type); |
| if ($svgNativeType) { |
| @@ -5479,7 +5480,11 @@ sub GetNativeType |
| if ($isParameter) { |
| return "$implClassName*"; |
| } elsif (IsWillBeGarbageCollectedType($interface->name)) { |
| - return "RefPtrWillBeRawPtr<$implClassName>"; |
| + if ($isMember) { |
| + return "RefPtrWillBeMember<$implClassName>"; |
|
Nils Barth (inactive)
2014/02/26 07:17:54
Keishi, could you please add a test case?
Since t
keishi
2014/02/27 07:33:34
I'm not sure if it is right but I've added a test.
Nils Barth (inactive)
2014/02/27 11:20:53
Thanks, looks generally ok;
I'll take a closer loo
Nils Barth (inactive)
2014/03/03 02:47:53
Current test case looks ok, but you need one more
|
| + } else { |
| + return "RefPtrWillBeRawPtr<$implClassName>"; |
| + } |
| } else { |
| return "RefPtr<$implClassName>"; |
| } |
| @@ -5489,9 +5494,15 @@ sub GetNativeType |
| my $arrayOrSequenceType = GetArrayOrSequenceType($type); |
| if ($arrayOrSequenceType) { |
| - my $nativeType = GetNativeType($arrayOrSequenceType); |
| - $nativeType .= " " if ($nativeType =~ />$/); |
| - return "Vector<${nativeType}>"; |
| + if (IsWillBeGarbageCollectedType($arrayOrSequenceType)) { |
| + my $nativeType = GetNativeType($arrayOrSequenceType, {}, "", "member"); |
| + $nativeType .= " " if ($nativeType =~ />$/); |
| + return "WillBeHeapVector<${nativeType}>"; |
| + } else { |
| + my $nativeType = GetNativeType($arrayOrSequenceType); |
| + $nativeType .= " " if ($nativeType =~ />$/); |
| + return "Vector<${nativeType}>"; |
| + } |
| } |
| # Default, assume native type is a pointer with same type name as idl type |
| @@ -5508,6 +5519,7 @@ sub GetNativeTypeForCallbacks |
| # Callbacks use raw pointers, so pass isParameter = 1 |
| my $nativeType = GetNativeType($type, {}, "parameter"); |
| return "const $nativeType&" if $nativeType =~ /^Vector/; |
| + return "const $nativeType&" if $nativeType =~ /^WillBeHeapVector/; |
| return $nativeType; |
| } |
| @@ -5616,6 +5628,10 @@ sub JSValueToNative |
| my $arrayOrSequenceType = GetArrayOrSequenceType($type); |
| if ($arrayOrSequenceType) { |
| + if (IsWillBeGarbageCollectedType($arrayOrSequenceType)) { |
| + AddToImplIncludes("V8${arrayOrSequenceType}.h"); |
| + return "(toRefPtrWillBeMemberNativeArray<${arrayOrSequenceType}, V8${arrayOrSequenceType}>($value, $argIndexOrZero, $getIsolate))"; |
|
haraken
2014/02/26 13:58:37
Still I don't fully understand why we need toRefPt
keishi
2014/02/27 07:33:34
I misunderstood. Done.
|
| + } |
| if (IsRefPtrType($arrayOrSequenceType)) { |
| AddToImplIncludes("V8${arrayOrSequenceType}.h"); |
| return "(toRefPtrNativeArray<${arrayOrSequenceType}, V8${arrayOrSequenceType}>($value, $argIndexOrZero, $getIsolate))"; |