Trace String.fromCharCode.

Handle failure signals of < 0 or NULL from traceable natives.
This commit is contained in:
2008-07-30 15:19:25 -07:00
parent 605598ab42
commit d1f5e72171
5 changed files with 88 additions and 34 deletions

View File

@@ -187,13 +187,40 @@ builtin_String_p_substring_1(JSContext *cx, JSString *str, jsint begin)
}
JSString* FASTCALL
builtin_ConcatStrings(JSContext *cx, JSString* left, JSString* right)
builtin_ConcatStrings(JSContext* cx, JSString* left, JSString* right)
{
/* XXX check for string freelist space */
/* XXX just make js_ConcatStrings FASTCALL? */
return js_ConcatStrings(cx, left, right);
}
JSString* FASTCALL
builtin_String_getelem(JSContext* cx, JSString* str, jsint i)
{
if ((size_t)i >= JSSTRING_LENGTH(str))
return NULL;
/* XXX check for string freelist space */
str = js_GetUnitString(cx, str, (size_t)i);
return str;
}
JSString* FASTCALL
builtin_String_fromCharCode(JSContext* cx, jsint i)
{
jschar c = (jschar)i;
/* XXX check for string freelist space */
/* XXX refactor js_GetUnitString so we can call it with a jschar */
/* (also in js_str_fromCharCode!) */
return js_NewStringCopyN(cx, &c, 1);
}
jsint FASTCALL
builtin_String_p_charCodeAt(JSString* str, jsint i)
{
if (i < 0 || (jsint)JSSTRING_LENGTH(str) <= i)
return -1;
return JSSTRING_CHARS(str)[i];
}
#define LO ARGSIZE_LO
#define F ARGSIZE_F
#define Q ARGSIZE_Q