Backed out changeset 8ead64ff09e8 (bug 1294013)

This commit is contained in:
Iris Hsiao 2016-08-17 18:50:40 +08:00
Родитель 82b995f603
Коммит 19389cc679
1 изменённых файлов: 15 добавлений и 16 удалений

Просмотреть файл

@ -1485,22 +1485,12 @@ GetStatusProperty(JSContext* cx, HandleObject obj, HandlePropertyName name, JSTr
} }
static bool static bool
ParseResumptionValue(JSContext* cx, HandleValue rval, JSTrapStatus* statusp, MutableHandleValue vp) ParseResumptionValueAsObject(JSContext* cx, HandleValue rv, JSTrapStatus* statusp,
MutableHandleValue vp)
{ {
if (rval.isUndefined()) {
*statusp = JSTRAP_CONTINUE;
vp.setUndefined();
return true;
}
if (rval.isNull()) {
*statusp = JSTRAP_ERROR;
vp.setUndefined();
return true;
}
int hits = 0; int hits = 0;
if (rval.isObject()) { if (rv.isObject()) {
RootedObject obj(cx, &rval.toObject()); RootedObject obj(cx, &rv.toObject());
if (!GetStatusProperty(cx, obj, cx->names().return_, JSTRAP_RETURN, statusp, vp, &hits)) if (!GetStatusProperty(cx, obj, cx->names().return_, JSTRAP_RETURN, statusp, vp, &hits))
return false; return false;
if (!GetStatusProperty(cx, obj, cx->names().throw_, JSTRAP_THROW, statusp, vp, &hits)) if (!GetStatusProperty(cx, obj, cx->names().throw_, JSTRAP_THROW, statusp, vp, &hits))
@ -1522,12 +1512,21 @@ Debugger::parseResumptionValueHelper(Maybe<AutoCompartment>& ac, bool ok, const
vp.setUndefined(); vp.setUndefined();
if (!ok) if (!ok)
return handleUncaughtException(ac, vp, callHook, thisVForCheck, frame); return handleUncaughtException(ac, vp, callHook, thisVForCheck, frame);
if (rv.isUndefined()) {
ac.reset();
return JSTRAP_CONTINUE;
}
if (rv.isNull()) {
ac.reset();
return JSTRAP_ERROR;
}
JSContext* cx = ac->context()->asJSContext(); JSContext* cx = ac->context()->asJSContext();
RootedValue rvRoot(cx, rv);
JSTrapStatus status = JSTRAP_CONTINUE; JSTrapStatus status = JSTRAP_CONTINUE;
RootedValue v(cx); RootedValue v(cx);
if (!ParseResumptionValue(cx, rvRoot, &status, &v) || RootedValue rvRoot(cx, rv);
if (!ParseResumptionValueAsObject(cx, rvRoot, &status, &v) ||
!unwrapDebuggeeValue(cx, &v)) !unwrapDebuggeeValue(cx, &v))
{ {
return handleUncaughtException(ac, vp, callHook, thisVForCheck, frame); return handleUncaughtException(ac, vp, callHook, thisVForCheck, frame);