зеркало из https://github.com/mozilla/gecko-dev.git
Make js_ConcatStrings JS_FASTCALL and use directly as a built-in; remove gcflag param from it and from js_NewString.
This commit is contained in:
Родитель
318379e34f
Коммит
b676b877d3
|
@ -52,7 +52,7 @@ BUILTIN4(Array_dense_setelem, LO, LO, LO, LO, LO, bool, JSContext*, JSObject*
|
|||
BUILTIN3(Array_p_join, LO, LO, LO, LO, JSString*, JSContext*, JSObject*, JSString*, 1, 1)
|
||||
BUILTIN4(String_p_substring, LO, LO, LO, LO, LO, JSString*, JSContext*, JSString*, jsint, jsint, 1, 1)
|
||||
BUILTIN3(String_p_substring_1, LO, LO, LO, LO, JSString*, JSContext*, JSString*, jsint, 1, 1)
|
||||
BUILTIN3(FastConcatStrings, LO, LO, LO, LO, JSString*, JSContext*, JSString*, JSString*, 1, 1)
|
||||
BUILTIN3(ConcatStrings, LO, LO, LO, LO, JSString*, JSContext*, JSString*, JSString*, 1, 1)
|
||||
BUILTIN3(String_getelem, LO, LO, LO, LO, JSString*, JSContext*, JSString*, jsint, 1, 1)
|
||||
BUILTIN2(String_fromCharCode, LO, LO, LO, JSString*, JSContext*, jsint, 1, 1)
|
||||
BUILTIN2(String_p_charCodeAt, LO, LO, LO, jsint, JSString*, jsint, 1, 1)
|
||||
|
|
|
@ -220,12 +220,6 @@ js_String_p_substring_1(JSContext* cx, JSString* str, jsint begin)
|
|||
return js_NewDependentString(cx, str, (size_t)begin, (size_t)(end - begin));
|
||||
}
|
||||
|
||||
JSString* FASTCALL
|
||||
js_FastConcatStrings(JSContext* cx, JSString* left, JSString* right)
|
||||
{
|
||||
return js_ConcatStrings(cx, left, right, GCF_DONT_BLOCK);
|
||||
}
|
||||
|
||||
JSString* FASTCALL
|
||||
js_String_getelem(JSContext* cx, JSString* str, jsint i)
|
||||
{
|
||||
|
@ -270,7 +264,7 @@ js_String_p_concat_1int(JSContext* cx, JSString* str, jsint i)
|
|||
JSString* istr = js_NumberToString(cx, i);
|
||||
if (!istr)
|
||||
return NULL;
|
||||
return js_ConcatStrings(cx, str, istr, GCF_DONT_BLOCK);
|
||||
return js_ConcatStrings(cx, str, istr);
|
||||
}
|
||||
|
||||
jsdouble FASTCALL
|
||||
|
|
|
@ -6708,7 +6708,6 @@ js_Interpret(JSContext *cx)
|
|||
L_JSOP_DEFXMLNS:
|
||||
# endif
|
||||
|
||||
L_JSOP_UNUSED75:
|
||||
L_JSOP_UNUSED76:
|
||||
L_JSOP_UNUSED77:
|
||||
L_JSOP_UNUSED78:
|
||||
|
|
|
@ -123,8 +123,8 @@ js_GetStringChars(JSContext *cx, JSString *str)
|
|||
return JSFLATSTR_CHARS(str);
|
||||
}
|
||||
|
||||
JSString *
|
||||
js_ConcatStrings(JSContext *cx, JSString *left, JSString *right, uintN gcflag)
|
||||
JSString * JS_FASTCALL
|
||||
js_ConcatStrings(JSContext *cx, JSString *left, JSString *right)
|
||||
{
|
||||
size_t rn, ln, lrdist, n;
|
||||
jschar *rs, *ls, *s;
|
||||
|
@ -164,7 +164,7 @@ js_ConcatStrings(JSContext *cx, JSString *left, JSString *right, uintN gcflag)
|
|||
js_strncpy(s + ln, rs, rn);
|
||||
n = ln + rn;
|
||||
s[n] = 0;
|
||||
str = js_NewString(cx, s, n, gcflag);
|
||||
str = js_NewString(cx, s, n);
|
||||
if (!str) {
|
||||
/* Out of memory: clean up any space we (re-)allocated. */
|
||||
if (!ldep) {
|
||||
|
@ -2502,7 +2502,7 @@ js_InitStringClass(JSContext *cx, JSObject *obj)
|
|||
}
|
||||
|
||||
JSString *
|
||||
js_NewString(JSContext *cx, jschar *chars, size_t length, uintN gcflag)
|
||||
js_NewString(JSContext *cx, jschar *chars, size_t length)
|
||||
{
|
||||
JSString *str;
|
||||
|
||||
|
@ -2511,7 +2511,7 @@ js_NewString(JSContext *cx, jschar *chars, size_t length, uintN gcflag)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
str = (JSString *) js_NewGCThing(cx, gcflag | GCX_STRING, sizeof(JSString));
|
||||
str = (JSString *) js_NewGCThing(cx, GCX_STRING, sizeof(JSString));
|
||||
if (!str)
|
||||
return NULL;
|
||||
JSFLATSTR_INIT(str, chars, length);
|
||||
|
|
|
@ -48,7 +48,6 @@
|
|||
* string descriptor. String descriptors are GC'ed, while their chars are
|
||||
* allocated from the malloc heap.
|
||||
*/
|
||||
#include "jsstddef.h"
|
||||
#include <ctype.h>
|
||||
#include "jspubtd.h"
|
||||
#include "jsprvtd.h"
|
||||
|
@ -241,9 +240,8 @@ js_GetDependentStringChars(JSString *str);
|
|||
extern const jschar *
|
||||
js_GetStringChars(JSContext *cx, JSString *str);
|
||||
|
||||
extern JSString *
|
||||
js_ConcatStrings(JSContext *cx, JSString *left, JSString *right,
|
||||
uintN gcflag __cplusplus_only( = 0));
|
||||
extern JSString * JS_FASTCALL
|
||||
js_ConcatStrings(JSContext *cx, JSString *left, JSString *right);
|
||||
|
||||
extern const jschar *
|
||||
js_UndependString(JSContext *cx, JSString *str);
|
||||
|
@ -445,8 +443,7 @@ extern const char js_encodeURIComponent_str[];
|
|||
|
||||
/* GC-allocate a string descriptor for the given malloc-allocated chars. */
|
||||
extern JSString *
|
||||
js_NewString(JSContext *cx, jschar *chars, size_t length,
|
||||
uintN gcflag __cplusplus_only( = 0));
|
||||
js_NewString(JSContext *cx, jschar *chars, size_t length);
|
||||
|
||||
extern JSString *
|
||||
js_NewDependentString(JSContext *cx, JSString *base, size_t start,
|
||||
|
|
|
@ -2718,7 +2718,7 @@ TraceRecorder::record_JSOP_ADD()
|
|||
jsval& l = stackval(-2);
|
||||
if (JSVAL_IS_STRING(l) && JSVAL_IS_STRING(r)) {
|
||||
LIns* args[] = { get(&r), get(&l), cx_ins };
|
||||
LIns* concat = lir->insCall(F_FastConcatStrings, args);
|
||||
LIns* concat = lir->insCall(F_ConcatStrings, args);
|
||||
guard(false, lir->ins_eq0(concat), OOM_EXIT);
|
||||
set(&l, concat);
|
||||
return true;
|
||||
|
|
Загрузка…
Ссылка в новой задаче