diff options
author | Moonchild <moonchild@palemoon.org> | 2020-11-20 09:47:03 +0000 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2020-11-20 09:47:03 +0000 |
commit | 5165ed02285315cc0bed7977c7bac6d0a90ca43c (patch) | |
tree | 9b761a21eb924915e51c2d803208e6c01b505a45 /js/src | |
parent | e1db27e19989db11fef70f439cf95821316535b3 (diff) | |
parent | ca9abcdf1702c37bf00048dab3f460b2252873a3 (diff) | |
download | UXP-RC_20201120.tar UXP-RC_20201120.tar.gz UXP-RC_20201120.tar.lz UXP-RC_20201120.tar.xz UXP-RC_20201120.zip |
Merge branch 'redwood' into releaseRELBASE_20201124RELBASE_20201120RC_20201120
Diffstat (limited to 'js/src')
-rw-r--r-- | js/src/gc/Heap.h | 18 | ||||
-rw-r--r-- | js/src/jsapi.cpp | 4 |
2 files changed, 21 insertions, 1 deletions
diff --git a/js/src/gc/Heap.h b/js/src/gc/Heap.h index 697803380..7f2c5fb4f 100644 --- a/js/src/gc/Heap.h +++ b/js/src/gc/Heap.h @@ -29,6 +29,7 @@ #include "js/HeapAPI.h" #include "js/RootingAPI.h" #include "js/TracingAPI.h" +#include "js/TraceKind.h" struct JSRuntime; @@ -273,6 +274,23 @@ struct Cell static MOZ_ALWAYS_INLINE bool needWriteBarrierPre(JS::Zone* zone); + template <class T> + inline bool is() const { + return getTraceKind() == JS::MapTypeToTraceKind<T>::kind; + } + + template<class T> + inline T* as() { + MOZ_ASSERT(is<T>()); + return static_cast<T*>(this); + } + + template <class T> + inline const T* as() const { + MOZ_ASSERT(is<T>()); + return static_cast<const T*>(this); + } + #ifdef DEBUG inline bool isAligned() const; void dump(FILE* fp) const; diff --git a/js/src/jsapi.cpp b/js/src/jsapi.cpp index c0f0e61cc..cd370e42c 100644 --- a/js/src/jsapi.cpp +++ b/js/src/jsapi.cpp @@ -7040,7 +7040,9 @@ JS::CaptureCurrentStack(JSContext* cx, JS::MutableHandleObject stackp, { AssertHeapIsIdle(cx); CHECK_REQUEST(cx); - MOZ_RELEASE_ASSERT(cx->compartment()); + if (!cx->compartment()) { + return false; + } JSCompartment* compartment = cx->compartment(); Rooted<SavedFrame*> frame(cx); |