зеркало из https://github.com/mozilla/gecko-dev.git
remove obsolete JSVAL_ERROR_COOKIE and JSVAL_FAIL (563063, r=dvander).
This commit is contained in:
Родитель
7cdd5542ef
Коммит
1f3e638a4d
|
@ -102,10 +102,6 @@ js_imod(int32 a, int32 b)
|
||||||
}
|
}
|
||||||
JS_DEFINE_CALLINFO_2(extern, INT32, js_imod, INT32, INT32, 1, ACC_NONE)
|
JS_DEFINE_CALLINFO_2(extern, INT32, js_imod, INT32, INT32, 1, ACC_NONE)
|
||||||
|
|
||||||
/* The following boxing/unboxing primitives we can't emit inline because
|
|
||||||
they either interact with the GC and depend on Spidermonkey's 32-bit
|
|
||||||
integer representation. */
|
|
||||||
|
|
||||||
jsval FASTCALL
|
jsval FASTCALL
|
||||||
js_BoxDouble(JSContext* cx, jsdouble d)
|
js_BoxDouble(JSContext* cx, jsdouble d)
|
||||||
{
|
{
|
||||||
|
@ -115,7 +111,7 @@ js_BoxDouble(JSContext* cx, jsdouble d)
|
||||||
JS_ASSERT(JS_ON_TRACE(cx));
|
JS_ASSERT(JS_ON_TRACE(cx));
|
||||||
jsval v; /* not rooted but ok here because we know GC won't run */
|
jsval v; /* not rooted but ok here because we know GC won't run */
|
||||||
if (!js_NewDoubleInRootedValue(cx, d, &v))
|
if (!js_NewDoubleInRootedValue(cx, d, &v))
|
||||||
return JSVAL_ERROR_COOKIE;
|
return JSVAL_NULL;
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
JS_DEFINE_CALLINFO_2(extern, JSVAL, js_BoxDouble, CONTEXT, DOUBLE, 1, ACC_NONE)
|
JS_DEFINE_CALLINFO_2(extern, JSVAL, js_BoxDouble, CONTEXT, DOUBLE, 1, ACC_NONE)
|
||||||
|
@ -129,7 +125,7 @@ js_BoxInt32(JSContext* cx, int32 i)
|
||||||
jsval v; /* not rooted but ok here because we know GC won't run */
|
jsval v; /* not rooted but ok here because we know GC won't run */
|
||||||
jsdouble d = (jsdouble)i;
|
jsdouble d = (jsdouble)i;
|
||||||
if (!js_NewDoubleInRootedValue(cx, d, &v))
|
if (!js_NewDoubleInRootedValue(cx, d, &v))
|
||||||
return JSVAL_ERROR_COOKIE;
|
return JSVAL_NULL;
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
JS_DEFINE_CALLINFO_2(extern, JSVAL, js_BoxInt32, CONTEXT, INT32, 1, ACC_NONE)
|
JS_DEFINE_CALLINFO_2(extern, JSVAL, js_BoxInt32, CONTEXT, INT32, 1, ACC_NONE)
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
#undef THIS
|
#undef THIS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
enum JSTNErrType { INFALLIBLE, FAIL_STATUS, FAIL_NULL, FAIL_NEG, FAIL_VOID, FAIL_COOKIE };
|
enum JSTNErrType { INFALLIBLE, FAIL_STATUS, FAIL_NULL, FAIL_NEG, FAIL_VOID };
|
||||||
enum { JSTN_ERRTYPE_MASK = 0x07, JSTN_UNBOX_AFTER = 0x08, JSTN_MORE = 0x10,
|
enum { JSTN_ERRTYPE_MASK = 0x07, JSTN_UNBOX_AFTER = 0x08, JSTN_MORE = 0x10,
|
||||||
JSTN_CONSTRUCTOR = 0x20 };
|
JSTN_CONSTRUCTOR = 0x20 };
|
||||||
|
|
||||||
|
@ -101,14 +101,6 @@ struct JSNativeTraceInfo {
|
||||||
JSSpecializedNative *specializations;
|
JSSpecializedNative *specializations;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
* We use a magic boxed pointer value to represent error conditions that
|
|
||||||
* trigger a side exit. The address is so low that it should never be actually
|
|
||||||
* in use. If it is, a performance regression occurs, not an actual runtime
|
|
||||||
* error.
|
|
||||||
*/
|
|
||||||
#define JSVAL_ERROR_COOKIE OBJECT_TO_JSVAL((JSObject*)0x10)
|
|
||||||
|
|
||||||
/* Macros used by JS_DEFINE_CALLINFOn. */
|
/* Macros used by JS_DEFINE_CALLINFOn. */
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
#define _JS_CI_NAME(op) ,#op
|
#define _JS_CI_NAME(op) ,#op
|
||||||
|
@ -160,7 +152,6 @@ struct ClosureVarInfo;
|
||||||
* INT32_RETRY: any negative value
|
* INT32_RETRY: any negative value
|
||||||
* STRING_RETRY: NULL
|
* STRING_RETRY: NULL
|
||||||
* OBJECT_RETRY_NULL: NULL
|
* OBJECT_RETRY_NULL: NULL
|
||||||
* JSVAL_RETRY: JSVAL_ERROR_COOKIE
|
|
||||||
*
|
*
|
||||||
* _RETRY function calls are faster than _FAIL calls. Each _RETRY call
|
* _RETRY function calls are faster than _FAIL calls. Each _RETRY call
|
||||||
* saves two writes to cx->bailExit and a read from state->builtinStatus.
|
* saves two writes to cx->bailExit and a read from state->builtinStatus.
|
||||||
|
@ -194,7 +185,6 @@ struct ClosureVarInfo;
|
||||||
#define _JS_CTYPE_PC _JS_CTYPE(jsbytecode *, _JS_PTR,"P", "", INFALLIBLE)
|
#define _JS_CTYPE_PC _JS_CTYPE(jsbytecode *, _JS_PTR,"P", "", INFALLIBLE)
|
||||||
#define _JS_CTYPE_JSVALPTR _JS_CTYPE(jsval *, _JS_PTR,"P", "", INFALLIBLE)
|
#define _JS_CTYPE_JSVALPTR _JS_CTYPE(jsval *, _JS_PTR,"P", "", INFALLIBLE)
|
||||||
#define _JS_CTYPE_JSVAL _JS_JSVAL_CTYPE( _JS_PTR, "","v", INFALLIBLE)
|
#define _JS_CTYPE_JSVAL _JS_JSVAL_CTYPE( _JS_PTR, "","v", INFALLIBLE)
|
||||||
#define _JS_CTYPE_JSVAL_RETRY _JS_JSVAL_CTYPE( _JS_PTR, --, --, FAIL_COOKIE)
|
|
||||||
#define _JS_CTYPE_JSVAL_FAIL _JS_JSVAL_CTYPE( _JS_PTR, --, --, FAIL_STATUS)
|
#define _JS_CTYPE_JSVAL_FAIL _JS_JSVAL_CTYPE( _JS_PTR, --, --, FAIL_STATUS)
|
||||||
#define _JS_CTYPE_JSID _JS_CTYPE(jsid, _JS_PTR, --, --, INFALLIBLE)
|
#define _JS_CTYPE_JSID _JS_CTYPE(jsid, _JS_PTR, --, --, INFALLIBLE)
|
||||||
#define _JS_CTYPE_BOOL _JS_CTYPE(JSBool, _JS_I32, "","i", INFALLIBLE)
|
#define _JS_CTYPE_BOOL _JS_CTYPE(JSBool, _JS_I32, "","i", INFALLIBLE)
|
||||||
|
|
|
@ -2746,7 +2746,6 @@ NativeToValue(JSContext* cx, jsval& v, TraceType type, double* slot)
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case TT_OBJECT:
|
case TT_OBJECT:
|
||||||
v = OBJECT_TO_JSVAL(*(JSObject**)slot);
|
v = OBJECT_TO_JSVAL(*(JSObject**)slot);
|
||||||
JS_ASSERT(v != JSVAL_ERROR_COOKIE); /* don't leak JSVAL_ERROR_COOKIE */
|
|
||||||
debug_only_printf(LC_TMTracer,
|
debug_only_printf(LC_TMTracer,
|
||||||
"object<%p:%s> ", (void*)JSVAL_TO_OBJECT(v),
|
"object<%p:%s> ", (void*)JSVAL_TO_OBJECT(v),
|
||||||
JSVAL_IS_NULL(v)
|
JSVAL_IS_NULL(v)
|
||||||
|
@ -2779,7 +2778,6 @@ NativeToValue(JSContext* cx, jsval& v, TraceType type, double* slot)
|
||||||
|
|
||||||
case TT_JSVAL:
|
case TT_JSVAL:
|
||||||
v = *(jsval*)slot;
|
v = *(jsval*)slot;
|
||||||
JS_ASSERT(v != JSVAL_ERROR_COOKIE); /* don't leak JSVAL_ERROR_COOKIE */
|
|
||||||
debug_only_printf(LC_TMTracer, "box<%p> ", (void*)v);
|
debug_only_printf(LC_TMTracer, "box<%p> ", (void*)v);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -9427,8 +9425,7 @@ TraceRecorder::box_jsval(jsval v, LIns* v_ins)
|
||||||
}
|
}
|
||||||
LIns* args[] = { v_ins, cx_ins };
|
LIns* args[] = { v_ins, cx_ins };
|
||||||
v_ins = lir->insCall(&js_BoxDouble_ci, args);
|
v_ins = lir->insCall(&js_BoxDouble_ci, args);
|
||||||
guard(false, lir->ins2(LIR_peq, v_ins, INS_CONSTWORD(JSVAL_ERROR_COOKIE)),
|
guard(false, lir->insEqP_0(v_ins), OOM_EXIT);
|
||||||
OOM_EXIT);
|
|
||||||
return v_ins;
|
return v_ins;
|
||||||
}
|
}
|
||||||
switch (JSVAL_TAG(v)) {
|
switch (JSVAL_TAG(v)) {
|
||||||
|
@ -10670,9 +10667,6 @@ TraceRecorder::emitNativeCall(JSSpecializedNative* sn, uintN argc, LIns* args[],
|
||||||
case FAIL_VOID:
|
case FAIL_VOID:
|
||||||
guard(false, lir->ins2ImmI(LIR_eq, res_ins, JSVAL_TO_SPECIAL(JSVAL_VOID)), OOM_EXIT);
|
guard(false, lir->ins2ImmI(LIR_eq, res_ins, JSVAL_TO_SPECIAL(JSVAL_VOID)), OOM_EXIT);
|
||||||
break;
|
break;
|
||||||
case FAIL_COOKIE:
|
|
||||||
guard(false, lir->ins2(LIR_peq, res_ins, INS_CONSTWORD(JSVAL_ERROR_COOKIE)), OOM_EXIT);
|
|
||||||
break;
|
|
||||||
default:;
|
default:;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15036,7 +15030,7 @@ CallIteratorNext_tn(JSContext* cx, jsbytecode* pc, JSObject* iterobj)
|
||||||
|
|
||||||
if (!ok) {
|
if (!ok) {
|
||||||
SetBuiltinError(cx);
|
SetBuiltinError(cx);
|
||||||
return JSVAL_ERROR_COOKIE;
|
return JSVAL_NULL; /* error occured, value doesn't matter. */
|
||||||
}
|
}
|
||||||
return tvr.value();
|
return tvr.value();
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче