Use helper is_typed_array function

This commit is contained in:
Igor Matuszewski 2018-03-13 13:23:01 +01:00
parent 6beb32e28e
commit c29fcb80f3

View file

@ -870,7 +870,7 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None,
return handleOptional(templateBody, declType, handleDefaultNull("None")) return handleOptional(templateBody, declType, handleDefaultNull("None"))
if type.isTypedArray() or type.isArrayBuffer() or type.isArrayBufferView() or type.isSharedArrayBuffer(): if is_typed_array(type):
if failureCode is None: if failureCode is None:
substitutions = { substitutions = {
"sourceDescription": sourceDescription, "sourceDescription": sourceDescription,
@ -4182,7 +4182,7 @@ def getUnionTypeTemplateVars(type, descriptorProvider):
elif type.isObject(): elif type.isObject():
name = type.name name = type.name
typeName = "Heap<*mut JSObject>" typeName = "Heap<*mut JSObject>"
elif type.isTypedArray() or type.isArrayBuffer() or type.isArrayBufferView() or type.isSharedArrayBuffer(): elif is_typed_array(type):
name = type.name name = type.name
typeName = "typedarray::Heap" + name typeName = "typedarray::Heap" + name
else: else:
@ -6468,7 +6468,7 @@ def type_needs_tracing(t):
if t.isUnion(): if t.isUnion():
return any(type_needs_tracing(member) for member in t.flatMemberTypes) return any(type_needs_tracing(member) for member in t.flatMemberTypes)
if t.isTypedArray() or t.isArrayBuffer() or t.isArrayBufferView() or t.isSharedArrayBuffer(): if is_typed_array(t):
return True return True
return False return False
@ -6491,6 +6491,12 @@ def type_needs_tracing(t):
assert False, (t, type(t)) assert False, (t, type(t))
def is_typed_array(t):
assert isinstance(t, IDLObject), (t, type(t))
return t.isTypedArray() or t.isArrayBuffer() or t.isArrayBufferView() or t.isSharedArrayBuffer()
def type_needs_auto_root(t): def type_needs_auto_root(t):
""" """
Certain IDL types, such as `sequence<any>` or `sequence<object>` need to be Certain IDL types, such as `sequence<any>` or `sequence<object>` need to be
@ -6501,8 +6507,8 @@ def type_needs_auto_root(t):
if t.isType(): if t.isType():
if t.isSequence() and (t.inner.isAny() or t.inner.isObject()): if t.isSequence() and (t.inner.isAny() or t.inner.isObject()):
return True return True
# SpiderMonkey interfaces # SpiderMonkey interfaces, we currently don't support any other except typed arrays
if t.isTypedArray() or t.isArrayBuffer() or t.isArrayBufferView() or t.isSharedArrayBuffer(): if is_typed_array(t):
return True return True
return False return False