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:
mrbkap%gmail.com 2005-08-22 22:30:08 +00:00
Родитель 0d6a610963
Коммит 228d38d67d
1 изменённых файлов: 10 добавлений и 9 удалений

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

@ -273,11 +273,15 @@ static JSClass prop_iterator_class = {
#define VALUE_TO_OBJECT(cx, v, obj) \
JS_BEGIN_MACRO \
SAVE_SP(fp); \
obj = js_ValueToNonNullObject(cx, v); \
if (!obj) { \
ok = JS_FALSE; \
goto out; \
if (!JSVAL_IS_PRIMITIVE(v)) { \
obj = JSVAL_TO_OBJECT(v); \
} else { \
SAVE_SP(fp); \
obj = js_ValueToNonNullObject(cx, v); \
if (!obj) { \
ok = JS_FALSE; \
goto out; \
} \
} \
JS_END_MACRO
@ -2082,10 +2086,7 @@ js_Interpret(JSContext *cx, jsbytecode *pc, jsval *result)
break;
case JSOP_TOOBJECT:
SAVE_SP(fp);
ok = js_ValueToObject(cx, FETCH_OPND(-1), &obj);
if (!ok)
goto out;
VALUE_TO_OBJECT(cx, FETCH_OPND(-1), obj);
STORE_OPND(-1, OBJECT_TO_JSVAL(obj));
break;