From 601e1f1204b6ac7780269f8d88387c656494a4a4 Mon Sep 17 00:00:00 2001 From: Brendan Eich Date: Fri, 4 Sep 2009 18:04:14 -0700 Subject: [PATCH] Use class statics for the unit and int string tables (513530 followup, r=gwagner). --- js/src/jsnum.cpp | 2 +- js/src/jsscope.cpp | 2 +- js/src/jsstr.cpp | 4 ++-- js/src/jsstr.h | 12 ++++++------ js/src/jsstrinlines.h | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/js/src/jsnum.cpp b/js/src/jsnum.cpp index fff32bb913ee..331d02e125ee 100644 --- a/js/src/jsnum.cpp +++ b/js/src/jsnum.cpp @@ -864,7 +864,7 @@ js_NumberToString(JSContext *cx, jsdouble d) if (JSDOUBLE_IS_INT(d, i)) { if (jsuint(i) < INT_STRING_LIMIT) - return &js_IntStrings[i]; + return &JSString::intStringTable[i]; } return NumberToStringWithBase(cx, d, 10); } diff --git a/js/src/jsscope.cpp b/js/src/jsscope.cpp index 072e25163418..c77e95b573cd 100644 --- a/js/src/jsscope.cpp +++ b/js/src/jsscope.cpp @@ -1549,7 +1549,7 @@ JSScope::clear(JSContext *cx) JSClass *clasp = object->getClass(); JSObject *proto = object->getProto(); - uint32 newShape; + uint32 newShape = 0; if (proto && clasp == proto->getClass()) { #ifdef DEBUG bool ok = diff --git a/js/src/jsstr.cpp b/js/src/jsstr.cpp index ed1ca5887375..c2145d44cdb0 100644 --- a/js/src/jsstr.cpp +++ b/js/src/jsstr.cpp @@ -2434,7 +2434,7 @@ static const jschar UnitStringData[] = { #define U(c) { 1 | JSString::ATOMIZED, {(jschar *)UnitStringData + (c) * 2} } -JSString js_UnitStrings[] = { +JSString JSString::unitStringTable[] = { U(0x00), U(0x01), U(0x02), U(0x03), U(0x04), U(0x05), U(0x06), U(0x07), U(0x08), U(0x09), U(0x0a), U(0x0b), U(0x0c), U(0x0d), U(0x0e), U(0x0f), U(0x10), U(0x11), U(0x12), U(0x13), U(0x14), U(0x15), U(0x16), U(0x17), @@ -2526,7 +2526,7 @@ static const jschar Hundreds[] = { #define L2(c) { 2 | JSString::ATOMIZED, {(jschar *)Hundreds + 41 + (c - 10) * 4} } /* length 2: 10..99 */ #define L3(c) { 3 | JSString::ATOMIZED, {(jschar *)Hundreds + (c - 100) * 4} } /* length 3: 100..255 */ -JSString js_IntStrings[] = { +JSString JSString::intStringTable[] = { L1(0x00), L1(0x01), L1(0x02), L1(0x03), L1(0x04), L1(0x05), L1(0x06), L1(0x07), L1(0x08), L1(0x09), L2(0x0a), L2(0x0b), L2(0x0c), L2(0x0d), L2(0x0e), L2(0x0f), L2(0x10), L2(0x11), L2(0x12), L2(0x13), L2(0x14), L2(0x15), L2(0x16), L2(0x17), diff --git a/js/src/jsstr.h b/js/src/jsstr.h index c8ebb30a86ec..142eb87226f1 100644 --- a/js/src/jsstr.h +++ b/js/src/jsstr.h @@ -65,9 +65,6 @@ enum { INT_STRING_LIMIT = 256U }; -extern JSString js_UnitStrings[]; -extern JSString js_IntStrings[]; - extern jschar * js_GetDependentStringChars(JSString *str); @@ -164,7 +161,7 @@ struct JSString { return (mLength & flag) != 0; } -public: + public: enum #if defined(_MSC_VER) && defined(_WIN64) : size_t /* VC++ 64-bit incorrectly defaults this enum's size to int. */ @@ -365,10 +362,13 @@ public: } static inline bool isStatic(JSString *s) { - return (s >= js_UnitStrings && s < &js_UnitStrings[UNIT_STRING_LIMIT]) || - (s >= js_IntStrings && s < &js_IntStrings[INT_STRING_LIMIT]); + return (s >= unitStringTable && s < &unitStringTable[UNIT_STRING_LIMIT]) || + (s >= intStringTable && s < &intStringTable[INT_STRING_LIMIT]); } + static JSString unitStringTable[]; + static JSString intStringTable[]; + static JSString *unitString(jschar c); static JSString *getUnitString(JSContext *cx, JSString *str, size_t index); }; diff --git a/js/src/jsstrinlines.h b/js/src/jsstrinlines.h index b687b1d3cce0..fdd65d45fd23 100644 --- a/js/src/jsstrinlines.h +++ b/js/src/jsstrinlines.h @@ -48,7 +48,7 @@ inline JSString * JSString::unitString(jschar c) { JS_ASSERT(c < UNIT_STRING_LIMIT); - return js_UnitStrings + c; + return &unitStringTable[c]; } inline JSString *