mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1026188 - Allow embedders to save JS execution stacks. r=sfink
This commit is contained in:
parent
c9e5e16fc1
commit
ed7a44d51b
@ -880,10 +880,10 @@ static bool
|
|||||||
SaveStack(JSContext *cx, unsigned argc, jsval *vp)
|
SaveStack(JSContext *cx, unsigned argc, jsval *vp)
|
||||||
{
|
{
|
||||||
CallArgs args = CallArgsFromVp(argc, vp);
|
CallArgs args = CallArgsFromVp(argc, vp);
|
||||||
Rooted<SavedFrame*> frame(cx);
|
Rooted<JSObject*> stack(cx);
|
||||||
if (!cx->compartment()->savedStacks().saveCurrentStack(cx, &frame))
|
if (!JS::CaptureCurrentStack(cx, &stack))
|
||||||
return false;
|
return false;
|
||||||
args.rval().setObject(*frame.get());
|
args.rval().setObject(*stack);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,6 +73,7 @@
|
|||||||
#include "vm/NumericConversions.h"
|
#include "vm/NumericConversions.h"
|
||||||
#include "vm/RegExpStatics.h"
|
#include "vm/RegExpStatics.h"
|
||||||
#include "vm/Runtime.h"
|
#include "vm/Runtime.h"
|
||||||
|
#include "vm/SavedStacks.h"
|
||||||
#include "vm/Shape.h"
|
#include "vm/Shape.h"
|
||||||
#include "vm/SharedArrayObject.h"
|
#include "vm/SharedArrayObject.h"
|
||||||
#include "vm/StopIterationObject.h"
|
#include "vm/StopIterationObject.h"
|
||||||
@ -6559,3 +6560,14 @@ JS::SetOutOfMemoryCallback(JSRuntime *rt, OutOfMemoryCallback cb, void *data)
|
|||||||
rt->oomCallbackData = data;
|
rt->oomCallbackData = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JS_PUBLIC_API(bool)
|
||||||
|
JS::CaptureCurrentStack(JSContext *cx, JS::MutableHandleObject stackp)
|
||||||
|
{
|
||||||
|
JSCompartment *compartment = cx->compartment();
|
||||||
|
JS_ASSERT(compartment);
|
||||||
|
Rooted<SavedFrame *> frame(cx);
|
||||||
|
if (!compartment->savedStacks().saveCurrentStack(cx, &frame))
|
||||||
|
return false;
|
||||||
|
stackp.set(frame.get());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
@ -5164,6 +5164,9 @@ typedef void
|
|||||||
extern JS_PUBLIC_API(void)
|
extern JS_PUBLIC_API(void)
|
||||||
SetOutOfMemoryCallback(JSRuntime *rt, OutOfMemoryCallback cb, void *data);
|
SetOutOfMemoryCallback(JSRuntime *rt, OutOfMemoryCallback cb, void *data);
|
||||||
|
|
||||||
|
extern JS_PUBLIC_API(bool)
|
||||||
|
CaptureCurrentStack(JSContext *cx, MutableHandleObject stackp);
|
||||||
|
|
||||||
} /* namespace JS */
|
} /* namespace JS */
|
||||||
|
|
||||||
#endif /* jsapi_h */
|
#endif /* jsapi_h */
|
||||||
|
Loading…
Reference in New Issue
Block a user