| 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))";
|
|
|