зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1432764 - Support Debug OSR with CacheIR_Regular ICs on stack r=jandem
MozReview-Commit-ID: 1ONbWxPpS4t --HG-- extra : rebase_source : 30a107741d37fd4a49cf0701798266190fcceb82
This commit is contained in:
Родитель
f004749d63
Коммит
4dadb65ad1
|
@ -0,0 +1,16 @@
|
|||
// |jit-test| error: uncaught exception
|
||||
g = newGlobal();
|
||||
g.parent = this;
|
||||
g.eval(`
|
||||
Debugger(parent).onExceptionUnwind = function(frame) { frame.older };
|
||||
`);
|
||||
|
||||
var handler = {
|
||||
has: function(tgt, key) { if (key == 'throw') { throw null; } }
|
||||
};
|
||||
|
||||
var proxy = new Proxy({}, handler);
|
||||
|
||||
for (let k of ['foo', 'throw']) {
|
||||
k in proxy;
|
||||
}
|
|
@ -2343,6 +2343,24 @@ ICCacheIR_Updated::stubDataStart()
|
|||
return reinterpret_cast<uint8_t*>(this) + stubInfo_->stubDataOffset();
|
||||
}
|
||||
|
||||
/* static */ ICCacheIR_Regular*
|
||||
ICCacheIR_Regular::Clone(JSContext* cx, ICStubSpace* space, ICStub* firstMonitorStub,
|
||||
ICCacheIR_Regular& other)
|
||||
{
|
||||
const CacheIRStubInfo* stubInfo = other.stubInfo();
|
||||
MOZ_ASSERT(stubInfo->makesGCCalls());
|
||||
|
||||
size_t bytesNeeded = stubInfo->stubDataOffset() + stubInfo->stubDataSize();
|
||||
void* newStub = space->alloc(bytesNeeded);
|
||||
if (!newStub)
|
||||
return nullptr;
|
||||
|
||||
ICCacheIR_Regular* res = new(newStub) ICCacheIR_Regular(other.jitCode(), stubInfo);
|
||||
stubInfo->copyStubData(&other, res);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
/* static */ ICCacheIR_Monitored*
|
||||
ICCacheIR_Monitored::Clone(JSContext* cx, ICStubSpace* space, ICStub* firstMonitorStub,
|
||||
ICCacheIR_Monitored& other)
|
||||
|
|
|
@ -695,6 +695,7 @@ RecompileBaselineScriptForDebugMode(JSContext* cx, JSScript* script,
|
|||
|
||||
#define PATCHABLE_ICSTUB_KIND_LIST(_) \
|
||||
_(CacheIR_Monitored) \
|
||||
_(CacheIR_Regular) \
|
||||
_(CacheIR_Updated) \
|
||||
_(Call_Scripted) \
|
||||
_(Call_AnyScripted) \
|
||||
|
|
|
@ -846,6 +846,9 @@ class ICCacheIR_Regular : public ICStub
|
|||
stubInfo_(stubInfo)
|
||||
{}
|
||||
|
||||
static ICCacheIR_Regular* Clone(JSContext* cx, ICStubSpace* space, ICStub* firstMonitorStub,
|
||||
ICCacheIR_Regular& other);
|
||||
|
||||
void notePreliminaryObject() {
|
||||
extra_ = 1;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче