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 825b6c65fd4c68c0044d9df07d038594f7e5d923..9c378bba9d67a93fba9eabca8817b7b7aa08c29a 100644 |
--- a/Source/bindings/scripts/code_generator_v8.pm |
+++ b/Source/bindings/scripts/code_generator_v8.pm |
@@ -5439,6 +5439,7 @@ sub GetNativeType |
my $type = shift; |
my $extendedAttributes = shift; |
my $isParameter = shift; |
+ my $isMember = shift; |
my $svgNativeType = GetSVGTypeNeedingTearOff($type); |
if ($svgNativeType) { |
@@ -5489,7 +5490,11 @@ sub GetNativeType |
if ($isParameter) { |
return "$implClassName*"; |
} elsif (IsWillBeGarbageCollectedType($interface->name)) { |
- return "RefPtrWillBeRawPtr<$implClassName>"; |
+ if ($isMember) { |
+ return "RefPtrWillBeMember<$implClassName>"; |
+ } else { |
+ return "RefPtrWillBeRawPtr<$implClassName>"; |
+ } |
} else { |
return "RefPtr<$implClassName>"; |
} |
@@ -5499,9 +5504,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 |
@@ -5626,6 +5637,10 @@ sub JSValueToNative |
my $arrayOrSequenceType = GetArrayOrSequenceType($type); |
if ($arrayOrSequenceType) { |
+ if (IsWillBeGarbageCollectedType($arrayOrSequenceType)) { |
+ AddToImplIncludes("V8${arrayOrSequenceType}.h"); |
+ return "(toRefPtrWillBeMemberNativeArray<${arrayOrSequenceType}, V8${arrayOrSequenceType}>($value, $argIndexOrZero, $getIsolate))"; |
+ } |
if (IsRefPtrType($arrayOrSequenceType)) { |
AddToImplIncludes("V8${arrayOrSequenceType}.h"); |
return "(toRefPtrNativeArray<${arrayOrSequenceType}, V8${arrayOrSequenceType}>($value, $argIndexOrZero, $getIsolate))"; |