зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1444604: Part 4: Construct FramePtrs from AbstractFramePtrs. r=jorendorff
--HG-- extra : rebase_source : 27cb8cb393ad666b38b320d9920021de16b74593 extra : histedit_source : ba96218ef2580dc2491e66137b961246068aa8fa
This commit is contained in:
Родитель
8889589772
Коммит
edecd0bbfd
|
@ -998,6 +998,25 @@ LiveSavedFrameCache::FramePtr::create(const FrameIter& iter)
|
|||
MOZ_CRASH("unexpected frame type");
|
||||
}
|
||||
|
||||
/* static */ inline LiveSavedFrameCache::FramePtr
|
||||
LiveSavedFrameCache::FramePtr::create(AbstractFramePtr afp)
|
||||
{
|
||||
MOZ_ASSERT(afp);
|
||||
|
||||
if (afp.isBaselineFrame()) {
|
||||
js::jit::CommonFrameLayout *common = afp.asBaselineFrame()->framePrefix();
|
||||
return FramePtr(common);
|
||||
}
|
||||
if (afp.isInterpreterFrame())
|
||||
return FramePtr(afp.asInterpreterFrame());
|
||||
if (afp.isWasmDebugFrame())
|
||||
return FramePtr(afp.asWasmDebugFrame());
|
||||
if (afp.isRematerializedFrame())
|
||||
return FramePtr(afp.asRematerializedFrame());
|
||||
|
||||
MOZ_CRASH("unexpected frame type");
|
||||
}
|
||||
|
||||
struct LiveSavedFrameCache::FramePtr::HasCachedMatcher {
|
||||
template<typename Frame>
|
||||
bool match(Frame* f) const { return f->hasCachedSavedFrame(); }
|
||||
|
|
|
@ -1264,6 +1264,9 @@ class LiveSavedFrameCache
|
|||
// for its frame. Otherwise, return Nothing.
|
||||
static inline mozilla::Maybe<FramePtr> create(const FrameIter& iter);
|
||||
|
||||
// Construct a FramePtr from an AbstractFramePtr. This always succeeds.
|
||||
static inline FramePtr create(AbstractFramePtr abstractFramePtr);
|
||||
|
||||
inline bool hasCachedSavedFrame() const;
|
||||
inline void setHasCachedSavedFrame();
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче