Bug 1081379 - Move js_InitArrayBufferClass into the right file (r=sfink)
--- a/js/src/vm/ArrayBufferObject.cpp
+++ b/js/src/vm/ArrayBufferObject.cpp
@@ -1254,8 +1254,54 @@ JS_GetObjectAsArrayBuffer(JSObject *obj,
JS_FRIEND_API(void)
js::GetArrayBufferLengthAndData(JSObject *obj, uint32_t *length, uint8_t **data)
{
MOZ_ASSERT(IsArrayBuffer(obj));
*length = AsArrayBuffer(obj).byteLength();
*data = AsArrayBuffer(obj).dataPointer();
}
+
+JSObject *
+js_InitArrayBufferClass(JSContext *cx, HandleObject obj)
+{
+ Rooted<GlobalObject*> global(cx, cx->compartment()->maybeGlobal());
+ if (global->isStandardClassResolved(JSProto_ArrayBuffer))
+ return &global->getPrototype(JSProto_ArrayBuffer).toObject();
+
+ RootedNativeObject arrayBufferProto(cx, global->createBlankPrototype(cx, &ArrayBufferObject::protoClass));
+ if (!arrayBufferProto)
+ return nullptr;
+
+ RootedFunction ctor(cx, global->createConstructor(cx, ArrayBufferObject::class_constructor,
+ cx->names().ArrayBuffer, 1));
+ if (!ctor)
+ return nullptr;
+
+ if (!GlobalObject::initBuiltinConstructor(cx, global, JSProto_ArrayBuffer,
+ ctor, arrayBufferProto))
+ {
+ return nullptr;
+ }
+
+ if (!LinkConstructorAndPrototype(cx, ctor, arrayBufferProto))
+ return nullptr;
+
+ RootedId byteLengthId(cx, NameToId(cx->names().byteLength));
+ unsigned attrs = JSPROP_SHARED | JSPROP_GETTER;
+ JSObject *getter = NewFunction(cx, NullPtr(), ArrayBufferObject::byteLengthGetter, 0,
+ JSFunction::NATIVE_FUN, global, NullPtr());
+ if (!getter)
+ return nullptr;
+
+ if (!DefineNativeProperty(cx, arrayBufferProto, byteLengthId, UndefinedHandleValue,
+ JS_DATA_TO_FUNC_PTR(PropertyOp, getter), nullptr, attrs))
+ return nullptr;
+
+ if (!JS_DefineFunctions(cx, ctor, ArrayBufferObject::jsstaticfuncs))
+ return nullptr;
+
+ if (!JS_DefineFunctions(cx, arrayBufferProto, ArrayBufferObject::jsfuncs))
+ return nullptr;
+
+ return arrayBufferProto;
+}
+
--- a/js/src/vm/TypedArrayObject.cpp
+++ b/js/src/vm/TypedArrayObject.cpp
@@ -1810,61 +1810,16 @@ const Class TypedArrayObject::protoClass
IMPL_TYPED_ARRAY_PROTO_CLASS(Uint16Array),
IMPL_TYPED_ARRAY_PROTO_CLASS(Int32Array),
IMPL_TYPED_ARRAY_PROTO_CLASS(Uint32Array),
IMPL_TYPED_ARRAY_PROTO_CLASS(Float32Array),
IMPL_TYPED_ARRAY_PROTO_CLASS(Float64Array),
IMPL_TYPED_ARRAY_PROTO_CLASS(Uint8ClampedArray)
};
-JSObject *
-js_InitArrayBufferClass(JSContext *cx, HandleObject obj)
-{
- Rooted<GlobalObject*> global(cx, cx->compartment()->maybeGlobal());
- if (global->isStandardClassResolved(JSProto_ArrayBuffer))
- return &global->getPrototype(JSProto_ArrayBuffer).toObject();
-
- RootedNativeObject arrayBufferProto(cx, global->createBlankPrototype(cx, &ArrayBufferObject::protoClass));
- if (!arrayBufferProto)
- return nullptr;
-
- RootedFunction ctor(cx, global->createConstructor(cx, ArrayBufferObject::class_constructor,
- cx->names().ArrayBuffer, 1));
- if (!ctor)
- return nullptr;
-
- if (!GlobalObject::initBuiltinConstructor(cx, global, JSProto_ArrayBuffer,
- ctor, arrayBufferProto))
- {
- return nullptr;
- }
-
- if (!LinkConstructorAndPrototype(cx, ctor, arrayBufferProto))
- return nullptr;
-
- RootedId byteLengthId(cx, NameToId(cx->names().byteLength));
- unsigned attrs = JSPROP_SHARED | JSPROP_GETTER;
- JSObject *getter = NewFunction(cx, NullPtr(), ArrayBufferObject::byteLengthGetter, 0,
- JSFunction::NATIVE_FUN, global, NullPtr());
- if (!getter)
- return nullptr;
-
- if (!DefineNativeProperty(cx, arrayBufferProto, byteLengthId, UndefinedHandleValue,
- JS_DATA_TO_FUNC_PTR(PropertyOp, getter), nullptr, attrs))
- return nullptr;
-
- if (!JS_DefineFunctions(cx, ctor, ArrayBufferObject::jsstaticfuncs))
- return nullptr;
-
- if (!JS_DefineFunctions(cx, arrayBufferProto, ArrayBufferObject::jsfuncs))
- return nullptr;
-
- return arrayBufferProto;
-}
-
/* static */ bool
TypedArrayObject::isOriginalLengthGetter(Native native)
{
return native == TypedArray_lengthGetter;
}
const Class DataViewObject::protoClass = {
"DataViewPrototype",