Trace slow array get/set of indexed props (453261, r=brendan).

This commit is contained in:
Andreas Gal
2008-09-15 00:54:28 -07:00
parent a2c9da0c07
commit c491382ad6
5 changed files with 52 additions and 21 deletions

View File

@@ -427,7 +427,7 @@ js_ParseIntDouble(jsdouble d)
}
jsval FASTCALL
js_Any_getelem(JSContext* cx, JSObject* obj, JSString* idstr)
js_Any_getprop(JSContext* cx, JSObject* obj, JSString* idstr)
{
jsval v;
jsid id;
@@ -440,7 +440,7 @@ js_Any_getelem(JSContext* cx, JSObject* obj, JSString* idstr)
}
JSBool FASTCALL
js_Any_setelem(JSContext* cx, JSObject* obj, JSString* idstr, jsval v)
js_Any_setprop(JSContext* cx, JSObject* obj, JSString* idstr, jsval v)
{
jsid id;
if (!js_ValueToStringId(cx, STRING_TO_JSVAL(idstr), &id))
@@ -448,6 +448,28 @@ js_Any_setelem(JSContext* cx, JSObject* obj, JSString* idstr, jsval v)
return OBJ_SET_PROPERTY(cx, obj, id, &v);
}
jsval FASTCALL
js_Any_getelem(JSContext* cx, JSObject* obj, jsuint index)
{
jsval v;
jsid id;
if (!js_IndexToId(cx, index, &id))
return JSVAL_ERROR_COOKIE;
if (!OBJ_GET_PROPERTY(cx, obj, id, &v))
return JSVAL_ERROR_COOKIE;
return v;
}
JSBool FASTCALL
js_Any_setelem(JSContext* cx, JSObject* obj, jsuint index, jsval v)
{
jsid id;
if (!js_IndexToId(cx, index, &id))
return JS_FALSE;
return OBJ_SET_PROPERTY(cx, obj, id, &v);
}
JSObject* FASTCALL
js_FastValueToIterator(JSContext* cx, jsuint flags, jsval v)
{
@@ -709,7 +731,7 @@ js_Array_1int(JSContext* cx, JSObject* proto, jsint i)
JS_ASSERT(JS_ON_TRACE(cx)); \
JSObject* obj = js_FastNewArray(cx, proto); \
if (obj) { \
uint32 len = ARRAY_GROWBY; \
const uint32 len = ARRAY_GROWBY; \
jsval* newslots = (jsval*) JS_malloc(cx, sizeof (jsval) * (len + 1)); \
if (newslots) { \
obj->dslots = newslots + 1; \