Loading js/src/builtin/TypedObject-inl.h 0 → 100644 +24 −0 Original line number Diff line number Diff line /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- * vim: set ts=8 sts=4 et sw=4 tw=99: * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef builtin_TypedObject_inl_h #define builtin_TypedObject_inl_h #include "builtin/TypedObject.h" #include "gc/ObjectKind-inl.h" /* static */ js::gc::AllocKind js::InlineTypedObject::allocKindForTypeDescriptor(TypeDescr* descr) { size_t nbytes = descr->size(); MOZ_ASSERT(nbytes <= MaximumSize); return gc::GetGCObjectKindForBytes(nbytes + sizeof(TypedObject)); } #endif // builtin_TypedObject_inl_h js/src/builtin/TypedObject.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "builtin/TypedObject.h" #include "builtin/TypedObject-inl.h" #include "mozilla/Casting.h" #include "mozilla/CheckedInt.h" Loading js/src/builtin/TypedObject.h +1 −6 Original line number Diff line number Diff line Loading @@ -707,12 +707,7 @@ class InlineTypedObject : public TypedObject public: static const size_t MaximumSize = JSObject::MAX_BYTE_SIZE - sizeof(TypedObject); static gc::AllocKind allocKindForTypeDescriptor(TypeDescr* descr) { size_t nbytes = descr->size(); MOZ_ASSERT(nbytes <= MaximumSize); return gc::GetGCObjectKindForBytes(nbytes + sizeof(TypedObject)); } static inline gc::AllocKind allocKindForTypeDescriptor(TypeDescr* descr); uint8_t* inlineTypedMem(const JS::AutoRequireNoGC&) const { return inlineTypedMem(); Loading js/src/frontend/BytecodeEmitter.cpp +0 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,6 @@ #include "wasm/AsmJS.h" #include "jsatominlines.h" #include "jsobjinlines.h" #include "jsscriptinlines.h" #include "frontend/ParseNode-inl.h" Loading js/src/gc/AllocKind.h +78 −0 Original line number Diff line number Diff line Loading @@ -191,6 +191,84 @@ FOR_EACH_ALLOCKIND(EXPAND_ELEMENT) static const size_t MAX_BACKGROUND_FINALIZE_KINDS = size_t(AllocKind::LIMIT) - size_t(AllocKind::OBJECT_LIMIT) / 2; static inline bool IsNurseryAllocable(AllocKind kind) { MOZ_ASSERT(IsValidAllocKind(kind)); static const bool map[] = { true, /* AllocKind::FUNCTION */ true, /* AllocKind::FUNCTION_EXTENDED */ false, /* AllocKind::OBJECT0 */ true, /* AllocKind::OBJECT0_BACKGROUND */ false, /* AllocKind::OBJECT2 */ true, /* AllocKind::OBJECT2_BACKGROUND */ false, /* AllocKind::OBJECT4 */ true, /* AllocKind::OBJECT4_BACKGROUND */ false, /* AllocKind::OBJECT8 */ true, /* AllocKind::OBJECT8_BACKGROUND */ false, /* AllocKind::OBJECT12 */ true, /* AllocKind::OBJECT12_BACKGROUND */ false, /* AllocKind::OBJECT16 */ true, /* AllocKind::OBJECT16_BACKGROUND */ false, /* AllocKind::SCRIPT */ false, /* AllocKind::LAZY_SCRIPT */ false, /* AllocKind::SHAPE */ false, /* AllocKind::ACCESSOR_SHAPE */ false, /* AllocKind::BASE_SHAPE */ false, /* AllocKind::OBJECT_GROUP */ false, /* AllocKind::FAT_INLINE_STRING */ false, /* AllocKind::STRING */ false, /* AllocKind::EXTERNAL_STRING */ false, /* AllocKind::FAT_INLINE_ATOM */ false, /* AllocKind::ATOM */ false, /* AllocKind::SYMBOL */ false, /* AllocKind::JITCODE */ false, /* AllocKind::SCOPE */ false, /* AllocKind::REGEXP_SHARED */ }; JS_STATIC_ASSERT(JS_ARRAY_LENGTH(map) == size_t(AllocKind::LIMIT)); return map[size_t(kind)]; } static inline bool IsBackgroundFinalized(AllocKind kind) { MOZ_ASSERT(IsValidAllocKind(kind)); static const bool map[] = { true, /* AllocKind::FUNCTION */ true, /* AllocKind::FUNCTION_EXTENDED */ false, /* AllocKind::OBJECT0 */ true, /* AllocKind::OBJECT0_BACKGROUND */ false, /* AllocKind::OBJECT2 */ true, /* AllocKind::OBJECT2_BACKGROUND */ false, /* AllocKind::OBJECT4 */ true, /* AllocKind::OBJECT4_BACKGROUND */ false, /* AllocKind::OBJECT8 */ true, /* AllocKind::OBJECT8_BACKGROUND */ false, /* AllocKind::OBJECT12 */ true, /* AllocKind::OBJECT12_BACKGROUND */ false, /* AllocKind::OBJECT16 */ true, /* AllocKind::OBJECT16_BACKGROUND */ false, /* AllocKind::SCRIPT */ true, /* AllocKind::LAZY_SCRIPT */ true, /* AllocKind::SHAPE */ true, /* AllocKind::ACCESSOR_SHAPE */ true, /* AllocKind::BASE_SHAPE */ true, /* AllocKind::OBJECT_GROUP */ true, /* AllocKind::FAT_INLINE_STRING */ true, /* AllocKind::STRING */ true, /* AllocKind::EXTERNAL_STRING */ true, /* AllocKind::FAT_INLINE_ATOM */ true, /* AllocKind::ATOM */ true, /* AllocKind::SYMBOL */ false, /* AllocKind::JITCODE */ true, /* AllocKind::SCOPE */ true, /* AllocKind::REGEXP_SHARED */ }; JS_STATIC_ASSERT(JS_ARRAY_LENGTH(map) == size_t(AllocKind::LIMIT)); return map[size_t(kind)]; } } /* namespace gc */ } /* namespace js */ Loading Loading
js/src/builtin/TypedObject-inl.h 0 → 100644 +24 −0 Original line number Diff line number Diff line /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- * vim: set ts=8 sts=4 et sw=4 tw=99: * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef builtin_TypedObject_inl_h #define builtin_TypedObject_inl_h #include "builtin/TypedObject.h" #include "gc/ObjectKind-inl.h" /* static */ js::gc::AllocKind js::InlineTypedObject::allocKindForTypeDescriptor(TypeDescr* descr) { size_t nbytes = descr->size(); MOZ_ASSERT(nbytes <= MaximumSize); return gc::GetGCObjectKindForBytes(nbytes + sizeof(TypedObject)); } #endif // builtin_TypedObject_inl_h
js/src/builtin/TypedObject.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "builtin/TypedObject.h" #include "builtin/TypedObject-inl.h" #include "mozilla/Casting.h" #include "mozilla/CheckedInt.h" Loading
js/src/builtin/TypedObject.h +1 −6 Original line number Diff line number Diff line Loading @@ -707,12 +707,7 @@ class InlineTypedObject : public TypedObject public: static const size_t MaximumSize = JSObject::MAX_BYTE_SIZE - sizeof(TypedObject); static gc::AllocKind allocKindForTypeDescriptor(TypeDescr* descr) { size_t nbytes = descr->size(); MOZ_ASSERT(nbytes <= MaximumSize); return gc::GetGCObjectKindForBytes(nbytes + sizeof(TypedObject)); } static inline gc::AllocKind allocKindForTypeDescriptor(TypeDescr* descr); uint8_t* inlineTypedMem(const JS::AutoRequireNoGC&) const { return inlineTypedMem(); Loading
js/src/frontend/BytecodeEmitter.cpp +0 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,6 @@ #include "wasm/AsmJS.h" #include "jsatominlines.h" #include "jsobjinlines.h" #include "jsscriptinlines.h" #include "frontend/ParseNode-inl.h" Loading
js/src/gc/AllocKind.h +78 −0 Original line number Diff line number Diff line Loading @@ -191,6 +191,84 @@ FOR_EACH_ALLOCKIND(EXPAND_ELEMENT) static const size_t MAX_BACKGROUND_FINALIZE_KINDS = size_t(AllocKind::LIMIT) - size_t(AllocKind::OBJECT_LIMIT) / 2; static inline bool IsNurseryAllocable(AllocKind kind) { MOZ_ASSERT(IsValidAllocKind(kind)); static const bool map[] = { true, /* AllocKind::FUNCTION */ true, /* AllocKind::FUNCTION_EXTENDED */ false, /* AllocKind::OBJECT0 */ true, /* AllocKind::OBJECT0_BACKGROUND */ false, /* AllocKind::OBJECT2 */ true, /* AllocKind::OBJECT2_BACKGROUND */ false, /* AllocKind::OBJECT4 */ true, /* AllocKind::OBJECT4_BACKGROUND */ false, /* AllocKind::OBJECT8 */ true, /* AllocKind::OBJECT8_BACKGROUND */ false, /* AllocKind::OBJECT12 */ true, /* AllocKind::OBJECT12_BACKGROUND */ false, /* AllocKind::OBJECT16 */ true, /* AllocKind::OBJECT16_BACKGROUND */ false, /* AllocKind::SCRIPT */ false, /* AllocKind::LAZY_SCRIPT */ false, /* AllocKind::SHAPE */ false, /* AllocKind::ACCESSOR_SHAPE */ false, /* AllocKind::BASE_SHAPE */ false, /* AllocKind::OBJECT_GROUP */ false, /* AllocKind::FAT_INLINE_STRING */ false, /* AllocKind::STRING */ false, /* AllocKind::EXTERNAL_STRING */ false, /* AllocKind::FAT_INLINE_ATOM */ false, /* AllocKind::ATOM */ false, /* AllocKind::SYMBOL */ false, /* AllocKind::JITCODE */ false, /* AllocKind::SCOPE */ false, /* AllocKind::REGEXP_SHARED */ }; JS_STATIC_ASSERT(JS_ARRAY_LENGTH(map) == size_t(AllocKind::LIMIT)); return map[size_t(kind)]; } static inline bool IsBackgroundFinalized(AllocKind kind) { MOZ_ASSERT(IsValidAllocKind(kind)); static const bool map[] = { true, /* AllocKind::FUNCTION */ true, /* AllocKind::FUNCTION_EXTENDED */ false, /* AllocKind::OBJECT0 */ true, /* AllocKind::OBJECT0_BACKGROUND */ false, /* AllocKind::OBJECT2 */ true, /* AllocKind::OBJECT2_BACKGROUND */ false, /* AllocKind::OBJECT4 */ true, /* AllocKind::OBJECT4_BACKGROUND */ false, /* AllocKind::OBJECT8 */ true, /* AllocKind::OBJECT8_BACKGROUND */ false, /* AllocKind::OBJECT12 */ true, /* AllocKind::OBJECT12_BACKGROUND */ false, /* AllocKind::OBJECT16 */ true, /* AllocKind::OBJECT16_BACKGROUND */ false, /* AllocKind::SCRIPT */ true, /* AllocKind::LAZY_SCRIPT */ true, /* AllocKind::SHAPE */ true, /* AllocKind::ACCESSOR_SHAPE */ true, /* AllocKind::BASE_SHAPE */ true, /* AllocKind::OBJECT_GROUP */ true, /* AllocKind::FAT_INLINE_STRING */ true, /* AllocKind::STRING */ true, /* AllocKind::EXTERNAL_STRING */ true, /* AllocKind::FAT_INLINE_ATOM */ true, /* AllocKind::ATOM */ true, /* AllocKind::SYMBOL */ false, /* AllocKind::JITCODE */ true, /* AllocKind::SCOPE */ true, /* AllocKind::REGEXP_SHARED */ }; JS_STATIC_ASSERT(JS_ARRAY_LENGTH(map) == size_t(AllocKind::LIMIT)); return map[size_t(kind)]; } } /* namespace gc */ } /* namespace js */ Loading