зеркало из https://github.com/mozilla/gecko-dev.git
bug 292731: Use the same optimization for with as we do for for-in; trying to fix the Tp loss caused by the removal of this optimization when we tried doing this the other way. r=brendan (on IRC)
This commit is contained in:
Родитель
0d6a610963
Коммит
228d38d67d
|
@ -273,11 +273,15 @@ static JSClass prop_iterator_class = {
|
||||||
|
|
||||||
#define VALUE_TO_OBJECT(cx, v, obj) \
|
#define VALUE_TO_OBJECT(cx, v, obj) \
|
||||||
JS_BEGIN_MACRO \
|
JS_BEGIN_MACRO \
|
||||||
SAVE_SP(fp); \
|
if (!JSVAL_IS_PRIMITIVE(v)) { \
|
||||||
obj = js_ValueToNonNullObject(cx, v); \
|
obj = JSVAL_TO_OBJECT(v); \
|
||||||
if (!obj) { \
|
} else { \
|
||||||
ok = JS_FALSE; \
|
SAVE_SP(fp); \
|
||||||
goto out; \
|
obj = js_ValueToNonNullObject(cx, v); \
|
||||||
|
if (!obj) { \
|
||||||
|
ok = JS_FALSE; \
|
||||||
|
goto out; \
|
||||||
|
} \
|
||||||
} \
|
} \
|
||||||
JS_END_MACRO
|
JS_END_MACRO
|
||||||
|
|
||||||
|
@ -2082,10 +2086,7 @@ js_Interpret(JSContext *cx, jsbytecode *pc, jsval *result)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case JSOP_TOOBJECT:
|
case JSOP_TOOBJECT:
|
||||||
SAVE_SP(fp);
|
VALUE_TO_OBJECT(cx, FETCH_OPND(-1), obj);
|
||||||
ok = js_ValueToObject(cx, FETCH_OPND(-1), &obj);
|
|
||||||
if (!ok)
|
|
||||||
goto out;
|
|
||||||
STORE_OPND(-1, OBJECT_TO_JSVAL(obj));
|
STORE_OPND(-1, OBJECT_TO_JSVAL(obj));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче