From b676b877d3f66f6020baa17ecd98c9306055a220 Mon Sep 17 00:00:00 2001 From: Brendan Eich Date: Mon, 11 Aug 2008 11:03:54 -0700 Subject: [PATCH] Make js_ConcatStrings JS_FASTCALL and use directly as a built-in; remove gcflag param from it and from js_NewString. --- js/src/builtins.tbl | 2 +- js/src/jsbuiltins.cpp | 8 +------- js/src/jsinterp.cpp | 1 - js/src/jsstr.cpp | 10 +++++----- js/src/jsstr.h | 9 +++------ js/src/jstracer.cpp | 2 +- 6 files changed, 11 insertions(+), 21 deletions(-) diff --git a/js/src/builtins.tbl b/js/src/builtins.tbl index 5488b3003c17..3639fd38a2d0 100644 --- a/js/src/builtins.tbl +++ b/js/src/builtins.tbl @@ -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) diff --git a/js/src/jsbuiltins.cpp b/js/src/jsbuiltins.cpp index 7bb76bc570d2..6726ee2423a7 100644 --- a/js/src/jsbuiltins.cpp +++ b/js/src/jsbuiltins.cpp @@ -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 diff --git a/js/src/jsinterp.cpp b/js/src/jsinterp.cpp index c6902bb8e77e..0106dcca56c2 100644 --- a/js/src/jsinterp.cpp +++ b/js/src/jsinterp.cpp @@ -6708,7 +6708,6 @@ js_Interpret(JSContext *cx) L_JSOP_DEFXMLNS: # endif - L_JSOP_UNUSED75: L_JSOP_UNUSED76: L_JSOP_UNUSED77: L_JSOP_UNUSED78: diff --git a/js/src/jsstr.cpp b/js/src/jsstr.cpp index 4126babc6216..ab39fe3373ff 100644 --- a/js/src/jsstr.cpp +++ b/js/src/jsstr.cpp @@ -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); diff --git a/js/src/jsstr.h b/js/src/jsstr.h index 47436c195de3..d4273d09e9da 100644 --- a/js/src/jsstr.h +++ b/js/src/jsstr.h @@ -48,7 +48,6 @@ * string descriptor. String descriptors are GC'ed, while their chars are * allocated from the malloc heap. */ -#include "jsstddef.h" #include #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, diff --git a/js/src/jstracer.cpp b/js/src/jstracer.cpp index 052b14c11ae5..8bd23b939d4d 100644 --- a/js/src/jstracer.cpp +++ b/js/src/jstracer.cpp @@ -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;