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 a554f2f090e7a318991dc654c0693d359a64a558..1f7b421f2530fa7b26090392b2efc098fe4fc940 100644 |
--- a/Source/bindings/scripts/code_generator_v8.pm |
+++ b/Source/bindings/scripts/code_generator_v8.pm |
@@ -5440,6 +5440,7 @@ sub GetNativeType |
my $type = shift; |
my $extendedAttributes = shift; |
my $isParameter = shift; |
+ my $isMember = shift; |
haraken
2014/02/27 15:32:43
The Perl generator is already gone, so you can rem
|
my $svgNativeType = GetSVGTypeNeedingTearOff($type); |
if ($svgNativeType) { |
@@ -5490,7 +5491,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>"; |
} |
@@ -5500,9 +5505,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 |
@@ -5519,6 +5530,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; |
} |
@@ -5627,6 +5639,10 @@ sub JSValueToNative |
my $arrayOrSequenceType = GetArrayOrSequenceType($type); |
if ($arrayOrSequenceType) { |
+ if (IsWillBeGarbageCollectedType($arrayOrSequenceType)) { |
+ AddToImplIncludes("V8${arrayOrSequenceType}.h"); |
+ return "(toMemberNativeArray<${arrayOrSequenceType}, V8${arrayOrSequenceType}>($value, $argIndexOrZero, $getIsolate))"; |
+ } |
if (IsRefPtrType($arrayOrSequenceType)) { |
AddToImplIncludes("V8${arrayOrSequenceType}.h"); |
return "(toRefPtrNativeArray<${arrayOrSequenceType}, V8${arrayOrSequenceType}>($value, $argIndexOrZero, $getIsolate))"; |