зеркало из https://github.com/mozilla/gecko-dev.git
Make js_ValueToString inline (503669, r=jwalden).
This commit is contained in:
Родитель
2cf657e82f
Коммит
26343fbe92
|
@ -92,6 +92,8 @@
|
||||||
#include "jsxml.h"
|
#include "jsxml.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "jsatominlines.h"
|
||||||
|
|
||||||
#ifdef HAVE_VA_LIST_AS_ARRAY
|
#ifdef HAVE_VA_LIST_AS_ARRAY
|
||||||
#define JS_ADDRESSOF_VA_LIST(ap) ((va_list *)(ap))
|
#define JS_ADDRESSOF_VA_LIST(ap) ((va_list *)(ap))
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -101,6 +101,8 @@
|
||||||
#include "jsstaticcheck.h"
|
#include "jsstaticcheck.h"
|
||||||
#include "jsvector.h"
|
#include "jsvector.h"
|
||||||
|
|
||||||
|
#include "jsatominlines.h"
|
||||||
|
|
||||||
/* 2^32 - 1 as a number and a string */
|
/* 2^32 - 1 as a number and a string */
|
||||||
#define MAXINDEX 4294967295u
|
#define MAXINDEX 4294967295u
|
||||||
#define MAXSTR "4294967295"
|
#define MAXSTR "4294967295"
|
||||||
|
|
|
@ -838,38 +838,6 @@ js_AtomizePrimitiveValue(JSContext *cx, jsval v, JSAtom **atomp)
|
||||||
return JS_TRUE;
|
return JS_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
JSBool
|
|
||||||
js_ValueToStringId(JSContext *cx, jsval v, jsid *idp)
|
|
||||||
{
|
|
||||||
JSString *str;
|
|
||||||
JSAtom *atom;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Optimize for the common case where v is an already-atomized string. The
|
|
||||||
* comment in jsstr.h before JSString::flatSetAtomized explains why this is
|
|
||||||
* thread-safe. The extra rooting via lastAtom (which would otherwise be
|
|
||||||
* done in js_js_AtomizeString) ensures the caller that the resulting id at
|
|
||||||
* is least weakly rooted.
|
|
||||||
*/
|
|
||||||
if (JSVAL_IS_STRING(v)) {
|
|
||||||
str = JSVAL_TO_STRING(v);
|
|
||||||
if (str->isAtomized()) {
|
|
||||||
cx->weakRoots.lastAtom = v;
|
|
||||||
*idp = ATOM_TO_JSID((JSAtom *) v);
|
|
||||||
return JS_TRUE;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
str = js_ValueToString(cx, v);
|
|
||||||
if (!str)
|
|
||||||
return JS_FALSE;
|
|
||||||
}
|
|
||||||
atom = js_AtomizeString(cx, str, 0);
|
|
||||||
if (!atom)
|
|
||||||
return JS_FALSE;
|
|
||||||
*idp = ATOM_TO_JSID(atom);
|
|
||||||
return JS_TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
|
||||||
static JSDHashOperator
|
static JSDHashOperator
|
||||||
|
|
|
@ -467,12 +467,6 @@ js_GetExistingStringAtom(JSContext *cx, const jschar *chars, size_t length);
|
||||||
JSBool
|
JSBool
|
||||||
js_AtomizePrimitiveValue(JSContext *cx, jsval v, JSAtom **atomp);
|
js_AtomizePrimitiveValue(JSContext *cx, jsval v, JSAtom **atomp);
|
||||||
|
|
||||||
/*
|
|
||||||
* Convert v to an atomized string and wrap it as an id.
|
|
||||||
*/
|
|
||||||
extern JSBool
|
|
||||||
js_ValueToStringId(JSContext *cx, jsval v, jsid *idp);
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
|
||||||
extern JS_FRIEND_API(void)
|
extern JS_FRIEND_API(void)
|
||||||
|
|
|
@ -0,0 +1,98 @@
|
||||||
|
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||||
|
*
|
||||||
|
* ***** BEGIN LICENSE BLOCK *****
|
||||||
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the Mozilla Public License Version
|
||||||
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
||||||
|
* the License. You may obtain a copy of the License at
|
||||||
|
* http://www.mozilla.org/MPL/
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
||||||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
||||||
|
* for the specific language governing rights and limitations under the
|
||||||
|
* License.
|
||||||
|
*
|
||||||
|
* The Original Code is Mozilla Communicator client code, released
|
||||||
|
* March 31, 1998.
|
||||||
|
*
|
||||||
|
* The Initial Developer of the Original Code is
|
||||||
|
* Netscape Communications Corporation.
|
||||||
|
* Portions created by the Initial Developer are Copyright (C) 1998
|
||||||
|
* the Initial Developer. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s):
|
||||||
|
*
|
||||||
|
* Alternatively, the contents of this file may be used under the terms of
|
||||||
|
* either of the GNU General Public License Version 2 or later (the "GPL"),
|
||||||
|
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
||||||
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
||||||
|
* of those above. If you wish to allow use of your version of this file only
|
||||||
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
||||||
|
* use your version of this file under the terms of the MPL, indicate your
|
||||||
|
* decision by deleting the provisions above and replace them with the notice
|
||||||
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
||||||
|
* the provisions above, a recipient may use your version of this file under
|
||||||
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
||||||
|
*
|
||||||
|
* ***** END LICENSE BLOCK ***** */
|
||||||
|
|
||||||
|
#ifndef jsatom_inlines_h___
|
||||||
|
#define jsatom_inlines_h___
|
||||||
|
|
||||||
|
#include "jsatom.h"
|
||||||
|
#include "jsnum.h"
|
||||||
|
|
||||||
|
JS_BEGIN_EXTERN_C
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Convert v to an atomized string and wrap it as an id.
|
||||||
|
*/
|
||||||
|
static inline JSBool
|
||||||
|
js_ValueToStringId(JSContext *cx, jsval v, jsid *idp)
|
||||||
|
{
|
||||||
|
JSString *str;
|
||||||
|
JSAtom *atom;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Optimize for the common case where v is an already-atomized string. The
|
||||||
|
* comment in jsstr.h before JSString::flatSetAtomized explains why this is
|
||||||
|
* thread-safe. The extra rooting via lastAtom (which would otherwise be
|
||||||
|
* done in js_js_AtomizeString) ensures the caller that the resulting id at
|
||||||
|
* is least weakly rooted.
|
||||||
|
*/
|
||||||
|
if (JSVAL_IS_STRING(v)) {
|
||||||
|
str = JSVAL_TO_STRING(v);
|
||||||
|
if (str->isAtomized()) {
|
||||||
|
cx->weakRoots.lastAtom = v;
|
||||||
|
*idp = ATOM_TO_JSID((JSAtom *) v);
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
str = js_ValueToString(cx, v);
|
||||||
|
if (!str)
|
||||||
|
return JS_FALSE;
|
||||||
|
}
|
||||||
|
atom = js_AtomizeString(cx, str, 0);
|
||||||
|
if (!atom)
|
||||||
|
return JS_FALSE;
|
||||||
|
*idp = ATOM_TO_JSID(atom);
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline JSBool
|
||||||
|
js_Int32ToId(JSContext* cx, int32 index, jsid* id)
|
||||||
|
{
|
||||||
|
if (index <= JSVAL_INT_MAX) {
|
||||||
|
*id = INT_TO_JSID(index);
|
||||||
|
return JS_TRUE;
|
||||||
|
}
|
||||||
|
JSString* str = js_NumberToString(cx, index);
|
||||||
|
if (!str)
|
||||||
|
return JS_FALSE;
|
||||||
|
return js_ValueToStringId(cx, STRING_TO_JSVAL(str), id);
|
||||||
|
}
|
||||||
|
|
||||||
|
JS_END_EXTERN_C
|
||||||
|
|
||||||
|
#endif /* jsatom_inlines_h___ */
|
|
@ -59,6 +59,8 @@
|
||||||
#include "jsbuiltins.h"
|
#include "jsbuiltins.h"
|
||||||
#include "jstracer.h"
|
#include "jstracer.h"
|
||||||
|
|
||||||
|
#include "jsatominlines.h"
|
||||||
|
|
||||||
using namespace avmplus;
|
using namespace avmplus;
|
||||||
using namespace nanojit;
|
using namespace nanojit;
|
||||||
|
|
||||||
|
|
|
@ -410,19 +410,6 @@ js_StringToNumber(JSContext* cx, JSString* str);
|
||||||
jsdouble FASTCALL
|
jsdouble FASTCALL
|
||||||
js_BooleanOrUndefinedToNumber(JSContext* cx, int32 unboxed);
|
js_BooleanOrUndefinedToNumber(JSContext* cx, int32 unboxed);
|
||||||
|
|
||||||
static JS_INLINE JSBool
|
|
||||||
js_Int32ToId(JSContext* cx, int32 index, jsid* id)
|
|
||||||
{
|
|
||||||
if (index <= JSVAL_INT_MAX) {
|
|
||||||
*id = INT_TO_JSID(index);
|
|
||||||
return JS_TRUE;
|
|
||||||
}
|
|
||||||
JSString* str = js_NumberToString(cx, index);
|
|
||||||
if (!str)
|
|
||||||
return JS_FALSE;
|
|
||||||
return js_ValueToStringId(cx, STRING_TO_JSVAL(str), id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Extern version of js_SetBuiltinError. */
|
/* Extern version of js_SetBuiltinError. */
|
||||||
extern JS_FRIEND_API(void)
|
extern JS_FRIEND_API(void)
|
||||||
js_SetTraceableNativeFailed(JSContext *cx);
|
js_SetTraceableNativeFailed(JSContext *cx);
|
||||||
|
|
|
@ -63,6 +63,8 @@
|
||||||
#include "jsstaticcheck.h"
|
#include "jsstaticcheck.h"
|
||||||
#include "jsstr.h"
|
#include "jsstr.h"
|
||||||
|
|
||||||
|
#include "jsatominlines.h"
|
||||||
|
|
||||||
#include "jsautooplen.h"
|
#include "jsautooplen.h"
|
||||||
|
|
||||||
typedef struct JSTrap {
|
typedef struct JSTrap {
|
||||||
|
|
|
@ -77,6 +77,8 @@
|
||||||
# include "jsxdrapi.h"
|
# include "jsxdrapi.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "jsatominlines.h"
|
||||||
|
|
||||||
/* Generic function/call/arguments tinyids -- also reflected bit numbers. */
|
/* Generic function/call/arguments tinyids -- also reflected bit numbers. */
|
||||||
enum {
|
enum {
|
||||||
CALL_ARGUMENTS = -1, /* predefined arguments local variable */
|
CALL_ARGUMENTS = -1, /* predefined arguments local variable */
|
||||||
|
|
|
@ -81,6 +81,8 @@
|
||||||
#include "jsxml.h"
|
#include "jsxml.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "jsatominlines.h"
|
||||||
|
|
||||||
#include "jsautooplen.h"
|
#include "jsautooplen.h"
|
||||||
|
|
||||||
/* jsinvoke_cpp___ indicates inclusion from jsinvoke.cpp. */
|
/* jsinvoke_cpp___ indicates inclusion from jsinvoke.cpp. */
|
||||||
|
|
|
@ -90,6 +90,8 @@
|
||||||
#include "jsdtracef.h"
|
#include "jsdtracef.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "jsatominlines.h"
|
||||||
|
|
||||||
#include "jsautooplen.h"
|
#include "jsautooplen.h"
|
||||||
|
|
||||||
#ifdef JS_THREADSAFE
|
#ifdef JS_THREADSAFE
|
||||||
|
|
|
@ -61,6 +61,8 @@
|
||||||
|
|
||||||
#include "json.h"
|
#include "json.h"
|
||||||
|
|
||||||
|
#include "jsatominlines.h"
|
||||||
|
|
||||||
JSClass js_JSONClass = {
|
JSClass js_JSONClass = {
|
||||||
js_JSON_str,
|
js_JSON_str,
|
||||||
JSCLASS_HAS_CACHED_PROTO(JSProto_JSON),
|
JSCLASS_HAS_CACHED_PROTO(JSProto_JSON),
|
||||||
|
|
|
@ -75,6 +75,8 @@
|
||||||
#include "jstracer.h"
|
#include "jstracer.h"
|
||||||
#include "jsxml.h"
|
#include "jsxml.h"
|
||||||
|
|
||||||
|
#include "jsatominlines.h"
|
||||||
|
|
||||||
#include "jsautooplen.h" // generated headers last
|
#include "jsautooplen.h" // generated headers last
|
||||||
#include "imacros.c.out"
|
#include "imacros.c.out"
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче