kill builtins.tbl (479888, r=jorendorff).
This commit is contained in:
@@ -214,7 +214,6 @@ ifdef ENABLE_JIT
|
|||||||
VPATH += $(srcdir)/nanojit
|
VPATH += $(srcdir)/nanojit
|
||||||
|
|
||||||
INSTALLED_HEADERS += \
|
INSTALLED_HEADERS += \
|
||||||
builtins.tbl \
|
|
||||||
jsbuiltins.h \
|
jsbuiltins.h \
|
||||||
Assembler.h \
|
Assembler.h \
|
||||||
LIR.h \
|
LIR.h \
|
||||||
|
|||||||
@@ -252,10 +252,6 @@ OTHER_HFILES = \
|
|||||||
jskeyword.tbl \
|
jskeyword.tbl \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
ifdef ENABLE_JIT
|
|
||||||
OTHER_HFILES += builtins.tbl
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifndef PREBUILT_CPUCFG
|
ifndef PREBUILT_CPUCFG
|
||||||
OTHER_HFILES += $(OBJDIR)/jsautocfg.h
|
OTHER_HFILES += $(OBJDIR)/jsautocfg.h
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -930,6 +930,7 @@ js_Array_dense_setelem(JSContext* cx, JSObject* obj, jsint i, jsval v)
|
|||||||
obj->dslots[u] = v;
|
obj->dslots[u] = v;
|
||||||
return JS_TRUE;
|
return JS_TRUE;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_4(extern, BOOL, js_Array_dense_setelem, CONTEXT, OBJECT, INT32, JSVAL, 0, 0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static JSBool
|
static JSBool
|
||||||
@@ -2314,6 +2315,7 @@ js_ArrayCompPush(JSContext *cx, JSObject *obj, jsval v)
|
|||||||
obj->dslots[length] = v;
|
obj->dslots[length] = v;
|
||||||
return JS_TRUE;
|
return JS_TRUE;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_3(extern, BOOL, js_ArrayCompPush, CONTEXT, OBJECT, JSVAL, 0, 0)
|
||||||
|
|
||||||
#ifdef JS_TRACER
|
#ifdef JS_TRACER
|
||||||
static jsval FASTCALL
|
static jsval FASTCALL
|
||||||
@@ -3271,6 +3273,7 @@ js_NewEmptyArray(JSContext* cx, JSObject* proto)
|
|||||||
obj->dslots = NULL;
|
obj->dslots = NULL;
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(extern, OBJECT, js_NewEmptyArray, CONTEXT, OBJECT, 0, 0)
|
||||||
|
|
||||||
JSObject* FASTCALL
|
JSObject* FASTCALL
|
||||||
js_NewUninitializedArray(JSContext* cx, JSObject* proto, uint32 len)
|
js_NewUninitializedArray(JSContext* cx, JSObject* proto, uint32 len)
|
||||||
@@ -3284,6 +3287,7 @@ js_NewUninitializedArray(JSContext* cx, JSObject* proto, uint32 len)
|
|||||||
return NULL;
|
return NULL;
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_3(extern, OBJECT, js_NewUninitializedArray, CONTEXT, OBJECT, UINT32, 0, 0)
|
||||||
|
|
||||||
#endif /* JS_TRACER */
|
#endif /* JS_TRACER */
|
||||||
|
|
||||||
@@ -3561,7 +3565,3 @@ js_ArrayToJSDoubleBuffer(JSContext *cx, JSObject *obj, jsuint offset, jsuint cou
|
|||||||
return JS_TRUE;
|
return JS_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
JS_DEFINE_CALLINFO_4(extern, BOOL, js_Array_dense_setelem, CONTEXT, OBJECT, INT32, JSVAL, 0, 0)
|
|
||||||
JS_DEFINE_CALLINFO_2(extern, OBJECT, js_NewEmptyArray, CONTEXT, OBJECT, 0, 0)
|
|
||||||
JS_DEFINE_CALLINFO_3(extern, OBJECT, js_NewUninitializedArray, CONTEXT, OBJECT, UINT32, 0, 0)
|
|
||||||
JS_DEFINE_CALLINFO_3(extern, BOOL, js_ArrayCompPush, CONTEXT, OBJECT, JSVAL, 0, 0)
|
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ js_dmod(jsdouble a, jsdouble b)
|
|||||||
r = fmod(a, b);
|
r = fmod(a, b);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(extern, DOUBLE, js_dmod, DOUBLE, DOUBLE, 1, 1)
|
||||||
|
|
||||||
int32 FASTCALL
|
int32 FASTCALL
|
||||||
js_imod(int32 a, int32 b)
|
js_imod(int32 a, int32 b)
|
||||||
@@ -102,6 +103,7 @@ js_imod(int32 a, int32 b)
|
|||||||
int r = a % b;
|
int r = a % b;
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(extern, INT32, js_imod, INT32, INT32, 1, 1)
|
||||||
|
|
||||||
/* The following boxing/unboxing primitives we can't emit inline because
|
/* The following boxing/unboxing primitives we can't emit inline because
|
||||||
they either interact with the GC and depend on Spidermonkey's 32-bit
|
they either interact with the GC and depend on Spidermonkey's 32-bit
|
||||||
@@ -119,6 +121,7 @@ js_BoxDouble(JSContext* cx, jsdouble d)
|
|||||||
return JSVAL_ERROR_COOKIE;
|
return JSVAL_ERROR_COOKIE;
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(extern, JSVAL, js_BoxDouble, CONTEXT, DOUBLE, 1, 1)
|
||||||
|
|
||||||
jsval FASTCALL
|
jsval FASTCALL
|
||||||
js_BoxInt32(JSContext* cx, int32 i)
|
js_BoxInt32(JSContext* cx, int32 i)
|
||||||
@@ -132,6 +135,7 @@ js_BoxInt32(JSContext* cx, int32 i)
|
|||||||
return JSVAL_ERROR_COOKIE;
|
return JSVAL_ERROR_COOKIE;
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(extern, JSVAL, js_BoxInt32, CONTEXT, INT32, 1, 1)
|
||||||
|
|
||||||
jsdouble FASTCALL
|
jsdouble FASTCALL
|
||||||
js_UnboxDouble(jsval v)
|
js_UnboxDouble(jsval v)
|
||||||
@@ -140,6 +144,7 @@ js_UnboxDouble(jsval v)
|
|||||||
return (jsdouble)JSVAL_TO_INT(v);
|
return (jsdouble)JSVAL_TO_INT(v);
|
||||||
return *JSVAL_TO_DOUBLE(v);
|
return *JSVAL_TO_DOUBLE(v);
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_1(extern, DOUBLE, js_UnboxDouble, JSVAL, 1, 1)
|
||||||
|
|
||||||
int32 FASTCALL
|
int32 FASTCALL
|
||||||
js_UnboxInt32(jsval v)
|
js_UnboxInt32(jsval v)
|
||||||
@@ -148,18 +153,21 @@ js_UnboxInt32(jsval v)
|
|||||||
return JSVAL_TO_INT(v);
|
return JSVAL_TO_INT(v);
|
||||||
return js_DoubleToECMAInt32(*JSVAL_TO_DOUBLE(v));
|
return js_DoubleToECMAInt32(*JSVAL_TO_DOUBLE(v));
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_1(extern, INT32, js_UnboxInt32, JSVAL, 1, 1)
|
||||||
|
|
||||||
int32 FASTCALL
|
int32 FASTCALL
|
||||||
js_DoubleToInt32(jsdouble d)
|
js_DoubleToInt32(jsdouble d)
|
||||||
{
|
{
|
||||||
return js_DoubleToECMAInt32(d);
|
return js_DoubleToECMAInt32(d);
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_1(extern, INT32, js_DoubleToInt32, DOUBLE, 1, 1)
|
||||||
|
|
||||||
uint32 FASTCALL
|
uint32 FASTCALL
|
||||||
js_DoubleToUint32(jsdouble d)
|
js_DoubleToUint32(jsdouble d)
|
||||||
{
|
{
|
||||||
return js_DoubleToECMAUint32(d);
|
return js_DoubleToECMAUint32(d);
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_1(extern, UINT32, js_DoubleToUint32, DOUBLE, 1, 1)
|
||||||
|
|
||||||
jsdouble FASTCALL
|
jsdouble FASTCALL
|
||||||
js_StringToNumber(JSContext* cx, JSString* str)
|
js_StringToNumber(JSContext* cx, JSString* str)
|
||||||
@@ -178,6 +186,7 @@ js_StringToNumber(JSContext* cx, JSString* str)
|
|||||||
}
|
}
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(extern, DOUBLE, js_StringToNumber, CONTEXT, STRING, 1, 1)
|
||||||
|
|
||||||
int32 FASTCALL
|
int32 FASTCALL
|
||||||
js_StringToInt32(JSContext* cx, JSString* str)
|
js_StringToInt32(JSContext* cx, JSString* str)
|
||||||
@@ -192,6 +201,7 @@ js_StringToInt32(JSContext* cx, JSString* str)
|
|||||||
return 0;
|
return 0;
|
||||||
return js_DoubleToECMAInt32(d);
|
return js_DoubleToECMAInt32(d);
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(extern, INT32, js_StringToInt32, CONTEXT, STRING, 1, 1)
|
||||||
|
|
||||||
SideExit* FASTCALL
|
SideExit* FASTCALL
|
||||||
js_CallTree(InterpState* state, Fragment* f)
|
js_CallTree(InterpState* state, Fragment* f)
|
||||||
@@ -227,6 +237,7 @@ js_CallTree(InterpState* state, Fragment* f)
|
|||||||
|
|
||||||
return lr;
|
return lr;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(extern, SIDEEXIT, js_CallTree, INTERPSTATE, FRAGMENT, 0, 0)
|
||||||
|
|
||||||
JSBool FASTCALL
|
JSBool FASTCALL
|
||||||
js_AddProperty(JSContext* cx, JSObject* obj, JSScopeProperty* sprop)
|
js_AddProperty(JSContext* cx, JSObject* obj, JSScopeProperty* sprop)
|
||||||
@@ -286,6 +297,7 @@ js_AddProperty(JSContext* cx, JSObject* obj, JSScopeProperty* sprop)
|
|||||||
JS_UNLOCK_SCOPE(cx, scope);
|
JS_UNLOCK_SCOPE(cx, scope);
|
||||||
return JS_FALSE;
|
return JS_FALSE;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_3(extern, BOOL, js_AddProperty, CONTEXT, OBJECT, SCOPEPROP, 0, 0)
|
||||||
|
|
||||||
static JSBool
|
static JSBool
|
||||||
HasProperty(JSContext* cx, JSObject* obj, jsid id)
|
HasProperty(JSContext* cx, JSObject* obj, jsid id)
|
||||||
@@ -317,6 +329,7 @@ js_HasNamedProperty(JSContext* cx, JSObject* obj, JSString* idstr)
|
|||||||
|
|
||||||
return HasProperty(cx, obj, id);
|
return HasProperty(cx, obj, id);
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_3(extern, BOOL, js_HasNamedProperty, CONTEXT, OBJECT, STRING, 0, 0)
|
||||||
|
|
||||||
JSBool FASTCALL
|
JSBool FASTCALL
|
||||||
js_HasNamedPropertyInt32(JSContext* cx, JSObject* obj, int32 index)
|
js_HasNamedPropertyInt32(JSContext* cx, JSObject* obj, int32 index)
|
||||||
@@ -327,6 +340,7 @@ js_HasNamedPropertyInt32(JSContext* cx, JSObject* obj, int32 index)
|
|||||||
|
|
||||||
return HasProperty(cx, obj, id);
|
return HasProperty(cx, obj, id);
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_3(extern, BOOL, js_HasNamedPropertyInt32, CONTEXT, OBJECT, INT32, 0, 0)
|
||||||
|
|
||||||
jsval FASTCALL
|
jsval FASTCALL
|
||||||
js_CallGetter(JSContext* cx, JSObject* obj, JSScopeProperty* sprop)
|
js_CallGetter(JSContext* cx, JSObject* obj, JSScopeProperty* sprop)
|
||||||
@@ -337,6 +351,7 @@ js_CallGetter(JSContext* cx, JSObject* obj, JSScopeProperty* sprop)
|
|||||||
return JSVAL_ERROR_COOKIE;
|
return JSVAL_ERROR_COOKIE;
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_3(extern, JSVAL, js_CallGetter, CONTEXT, OBJECT, SCOPEPROP, 0, 0)
|
||||||
|
|
||||||
JSString* FASTCALL
|
JSString* FASTCALL
|
||||||
js_TypeOfObject(JSContext* cx, JSObject* obj)
|
js_TypeOfObject(JSContext* cx, JSObject* obj)
|
||||||
@@ -344,6 +359,7 @@ js_TypeOfObject(JSContext* cx, JSObject* obj)
|
|||||||
JSType type = JS_TypeOfValue(cx, OBJECT_TO_JSVAL(obj));
|
JSType type = JS_TypeOfValue(cx, OBJECT_TO_JSVAL(obj));
|
||||||
return ATOM_TO_STRING(cx->runtime->atomState.typeAtoms[type]);
|
return ATOM_TO_STRING(cx->runtime->atomState.typeAtoms[type]);
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(extern, STRING, js_TypeOfObject, CONTEXT, OBJECT, 1, 1)
|
||||||
|
|
||||||
JSString* FASTCALL
|
JSString* FASTCALL
|
||||||
js_TypeOfBoolean(JSContext* cx, int32 unboxed)
|
js_TypeOfBoolean(JSContext* cx, int32 unboxed)
|
||||||
@@ -354,6 +370,7 @@ js_TypeOfBoolean(JSContext* cx, int32 unboxed)
|
|||||||
JSType type = JS_TypeOfValue(cx, boxed);
|
JSType type = JS_TypeOfValue(cx, boxed);
|
||||||
return ATOM_TO_STRING(cx->runtime->atomState.typeAtoms[type]);
|
return ATOM_TO_STRING(cx->runtime->atomState.typeAtoms[type]);
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(extern, STRING, js_TypeOfBoolean, CONTEXT, INT32, 1, 1)
|
||||||
|
|
||||||
jsdouble FASTCALL
|
jsdouble FASTCALL
|
||||||
js_BooleanOrUndefinedToNumber(JSContext* cx, int32 unboxed)
|
js_BooleanOrUndefinedToNumber(JSContext* cx, int32 unboxed)
|
||||||
@@ -363,6 +380,7 @@ js_BooleanOrUndefinedToNumber(JSContext* cx, int32 unboxed)
|
|||||||
JS_ASSERT(unboxed == JS_TRUE || unboxed == JS_FALSE);
|
JS_ASSERT(unboxed == JS_TRUE || unboxed == JS_FALSE);
|
||||||
return unboxed;
|
return unboxed;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(extern, DOUBLE, js_BooleanOrUndefinedToNumber, CONTEXT, INT32, 1, 1)
|
||||||
|
|
||||||
JSString* FASTCALL
|
JSString* FASTCALL
|
||||||
js_BooleanOrUndefinedToString(JSContext *cx, int32 unboxed)
|
js_BooleanOrUndefinedToString(JSContext *cx, int32 unboxed)
|
||||||
@@ -370,12 +388,14 @@ js_BooleanOrUndefinedToString(JSContext *cx, int32 unboxed)
|
|||||||
JS_ASSERT(uint32(unboxed) <= 2);
|
JS_ASSERT(uint32(unboxed) <= 2);
|
||||||
return ATOM_TO_STRING(cx->runtime->atomState.booleanAtoms[unboxed]);
|
return ATOM_TO_STRING(cx->runtime->atomState.booleanAtoms[unboxed]);
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(extern, STRING, js_BooleanOrUndefinedToString, CONTEXT, INT32, 1, 1)
|
||||||
|
|
||||||
JSObject* FASTCALL
|
JSObject* FASTCALL
|
||||||
js_Arguments(JSContext* cx)
|
js_Arguments(JSContext* cx)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_1(extern, OBJECT, js_Arguments, CONTEXT, 0, 0)
|
||||||
|
|
||||||
JSObject* FASTCALL
|
JSObject* FASTCALL
|
||||||
js_NewNullClosure(JSContext* cx, JSObject* funobj, JSObject* proto, JSObject *parent)
|
js_NewNullClosure(JSContext* cx, JSObject* funobj, JSObject* proto, JSObject *parent)
|
||||||
@@ -401,10 +421,5 @@ js_NewNullClosure(JSContext* cx, JSObject* funobj, JSObject* proto, JSObject *pa
|
|||||||
closure->dslots = NULL;
|
closure->dslots = NULL;
|
||||||
return closure;
|
return closure;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_4(extern, OBJECT, js_NewNullClosure, CONTEXT, OBJECT, OBJECT, OBJECT, 0, 0)
|
||||||
|
|
||||||
#define BUILTIN1 JS_DEFINE_CALLINFO_1
|
|
||||||
#define BUILTIN2 JS_DEFINE_CALLINFO_2
|
|
||||||
#define BUILTIN3 JS_DEFINE_CALLINFO_3
|
|
||||||
#define BUILTIN4 JS_DEFINE_CALLINFO_4
|
|
||||||
#define BUILTIN5 JS_DEFINE_CALLINFO_5
|
|
||||||
#include "builtins.tbl"
|
|
||||||
|
|||||||
@@ -251,10 +251,33 @@ struct JSTraceableNative {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Declare a C function named <op> and a CallInfo struct named <op>_callinfo so the
|
* This macro is used for builtin functions that can be called from JITted
|
||||||
* tracer can call it. |linkage| controls the visibility of both the function
|
* code. It declares a C function named <op> and a CallInfo struct named
|
||||||
* and the CallInfo global. It can be extern, static, or FRIEND, which
|
* <op>_ci so the tracer can call it. The <N> in JS_DEFINE_CALLINFO_<N> is
|
||||||
* specifies JS_FRIEND_API linkage for the function.
|
* the number of arguments the builtin takes. Builtins with no arguments
|
||||||
|
* are not supported. Using a macro is clunky but ensures that the types
|
||||||
|
* for each C function matches those for the corresponding CallInfo struct;
|
||||||
|
* mismatched types can cause subtle problems.
|
||||||
|
*
|
||||||
|
* The macro arguments are:
|
||||||
|
*
|
||||||
|
* - The linkage for the function and the associated CallInfo global. It
|
||||||
|
* can be extern, static, or FRIEND, which specifies JS_FRIEND_API linkage
|
||||||
|
* for the function.
|
||||||
|
*
|
||||||
|
* - The return type. This identifier must name one of the _JS_TYPEINFO_*
|
||||||
|
* macros defined in jsbuiltins.h.
|
||||||
|
*
|
||||||
|
* - The builtin name.
|
||||||
|
*
|
||||||
|
* - The parameter types.
|
||||||
|
*
|
||||||
|
* - The cse flag. 1 if the builtin call can be optimized away by common
|
||||||
|
* subexpression elimination; otherwise 0. This should be 1 only if the
|
||||||
|
* function is idempotent and the return value is determined solely by the
|
||||||
|
* arguments.
|
||||||
|
*
|
||||||
|
* - The fold flag. Reserved. The same as cse for now.
|
||||||
*/
|
*/
|
||||||
#define JS_DEFINE_CALLINFO_1(linkage, rt, op, at0, cse, fold) \
|
#define JS_DEFINE_CALLINFO_1(linkage, rt, op, at0, cse, fold) \
|
||||||
_JS_DEFINE_CALLINFO(linkage, op, _JS_CTYPE_TYPE(rt), (_JS_CTYPE_TYPE(at0)), \
|
_JS_DEFINE_CALLINFO(linkage, op, _JS_CTYPE_TYPE(rt), (_JS_CTYPE_TYPE(at0)), \
|
||||||
@@ -442,17 +465,28 @@ JS_DECLARE_CALLINFO(js_String_p_charCodeAt0_int)
|
|||||||
JS_DECLARE_CALLINFO(js_String_p_charCodeAt_int)
|
JS_DECLARE_CALLINFO(js_String_p_charCodeAt_int)
|
||||||
|
|
||||||
/* Defined in jsbuiltins.cpp. */
|
/* Defined in jsbuiltins.cpp. */
|
||||||
#define BUILTIN1(linkage, rt, op, at0, cse, fold) JS_DECLARE_CALLINFO(op)
|
JS_DECLARE_CALLINFO(js_BoxDouble)
|
||||||
#define BUILTIN2(linkage, rt, op, at0, at1, cse, fold) JS_DECLARE_CALLINFO(op)
|
JS_DECLARE_CALLINFO(js_BoxInt32)
|
||||||
#define BUILTIN3(linkage, rt, op, at0, at1, at2, cse, fold) JS_DECLARE_CALLINFO(op)
|
JS_DECLARE_CALLINFO(js_UnboxDouble)
|
||||||
#define BUILTIN4(linkage, rt, op, at0, at1, at2, at3, cse, fold) JS_DECLARE_CALLINFO(op)
|
JS_DECLARE_CALLINFO(js_UnboxInt32)
|
||||||
#define BUILTIN5(linkage, rt, op, at0, at1, at2, at3, at4, cse, fold) JS_DECLARE_CALLINFO(op)
|
JS_DECLARE_CALLINFO(js_dmod)
|
||||||
#include "builtins.tbl"
|
JS_DECLARE_CALLINFO(js_imod)
|
||||||
#undef BUILTIN
|
JS_DECLARE_CALLINFO(js_DoubleToInt32)
|
||||||
#undef BUILTIN1
|
JS_DECLARE_CALLINFO(js_DoubleToUint32)
|
||||||
#undef BUILTIN2
|
|
||||||
#undef BUILTIN3
|
JS_DECLARE_CALLINFO(js_StringToNumber)
|
||||||
#undef BUILTIN4
|
JS_DECLARE_CALLINFO(js_StringToInt32)
|
||||||
#undef BUILTIN5
|
JS_DECLARE_CALLINFO(js_CloseIterator)
|
||||||
|
JS_DECLARE_CALLINFO(js_CallTree)
|
||||||
|
JS_DECLARE_CALLINFO(js_AddProperty)
|
||||||
|
JS_DECLARE_CALLINFO(js_HasNamedProperty)
|
||||||
|
JS_DECLARE_CALLINFO(js_HasNamedPropertyInt32)
|
||||||
|
JS_DECLARE_CALLINFO(js_CallGetter)
|
||||||
|
JS_DECLARE_CALLINFO(js_TypeOfObject)
|
||||||
|
JS_DECLARE_CALLINFO(js_TypeOfBoolean)
|
||||||
|
JS_DECLARE_CALLINFO(js_BooleanOrUndefinedToNumber)
|
||||||
|
JS_DECLARE_CALLINFO(js_BooleanOrUndefinedToString)
|
||||||
|
JS_DECLARE_CALLINFO(js_Arguments)
|
||||||
|
JS_DECLARE_CALLINFO(js_NewNullClosure)
|
||||||
|
|
||||||
#endif /* jsbuiltins_h___ */
|
#endif /* jsbuiltins_h___ */
|
||||||
|
|||||||
@@ -443,6 +443,7 @@ js_CloseIterator(JSContext *cx, jsval v)
|
|||||||
#endif
|
#endif
|
||||||
return JS_TRUE;
|
return JS_TRUE;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(FRIEND, BOOL, js_CloseIterator, CONTEXT, JSVAL, 0, 0)
|
||||||
|
|
||||||
static JSBool
|
static JSBool
|
||||||
CallEnumeratorNext(JSContext *cx, JSObject *iterobj, uintN flags, jsval *rval)
|
CallEnumeratorNext(JSContext *cx, JSObject *iterobj, uintN flags, jsval *rval)
|
||||||
|
|||||||
@@ -1012,6 +1012,7 @@ js_String_p_charCodeAt_int(JSString* str, jsint i)
|
|||||||
return 0;
|
return 0;
|
||||||
return JSSTRING_CHARS(str)[i];
|
return JSSTRING_CHARS(str)[i];
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(extern, INT32, js_String_p_charCodeAt_int, STRING, INT32, 1, 1)
|
||||||
|
|
||||||
jsdouble FASTCALL
|
jsdouble FASTCALL
|
||||||
js_String_p_charCodeAt0(JSString* str)
|
js_String_p_charCodeAt0(JSString* str)
|
||||||
@@ -1021,6 +1022,10 @@ js_String_p_charCodeAt0(JSString* str)
|
|||||||
return jsdouble(JSSTRING_CHARS(str)[0]);
|
return jsdouble(JSSTRING_CHARS(str)[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The FuncFilter replaces the generic double version of charCodeAt with the
|
||||||
|
* integer fast path if appropriate.
|
||||||
|
*/
|
||||||
int32 FASTCALL
|
int32 FASTCALL
|
||||||
js_String_p_charCodeAt0_int(JSString* str)
|
js_String_p_charCodeAt0_int(JSString* str)
|
||||||
{
|
{
|
||||||
@@ -1028,13 +1033,7 @@ js_String_p_charCodeAt0_int(JSString* str)
|
|||||||
return 0;
|
return 0;
|
||||||
return JSSTRING_CHARS(str)[0];
|
return JSSTRING_CHARS(str)[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* The FuncFilter replaces the generic double version of charCodeAt with the
|
|
||||||
* integer fast path if appropriate.
|
|
||||||
*/
|
|
||||||
JS_DEFINE_CALLINFO_1(extern, INT32, js_String_p_charCodeAt0_int, STRING, 1, 1)
|
JS_DEFINE_CALLINFO_1(extern, INT32, js_String_p_charCodeAt0_int, STRING, 1, 1)
|
||||||
JS_DEFINE_CALLINFO_2(extern, INT32, js_String_p_charCodeAt_int, STRING, INT32, 1, 1)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
jsint
|
jsint
|
||||||
@@ -2383,9 +2382,6 @@ js_String_getelem(JSContext* cx, JSString* str, int32 i)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
JS_DEFINE_CALLINFO_2(extern, BOOL, js_EqualStrings, STRING, STRING, 1, 1)
|
|
||||||
JS_DEFINE_CALLINFO_2(extern, INT32, js_CompareStrings, STRING, STRING, 1, 1)
|
|
||||||
|
|
||||||
JS_DEFINE_TRCINFO_1(str_toString,
|
JS_DEFINE_TRCINFO_1(str_toString,
|
||||||
(2, (extern, STRING_RETRY, String_p_toString, CONTEXT, THIS, 1, 1)))
|
(2, (extern, STRING_RETRY, String_p_toString, CONTEXT, THIS, 1, 1)))
|
||||||
JS_DEFINE_TRCINFO_1(str_charAt,
|
JS_DEFINE_TRCINFO_1(str_charAt,
|
||||||
@@ -2491,7 +2487,6 @@ js_String_tn(JSContext* cx, JSObject* proto, JSString* str)
|
|||||||
obj->fslots[JSSLOT_PRIVATE] = STRING_TO_JSVAL(str);
|
obj->fslots[JSSLOT_PRIVATE] = STRING_TO_JSVAL(str);
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
JS_DEFINE_CALLINFO_3(extern, OBJECT, js_String_tn, CONTEXT, CALLEE_PROTOTYPE, STRING, 0, 0)
|
JS_DEFINE_CALLINFO_3(extern, OBJECT, js_String_tn, CONTEXT, CALLEE_PROTOTYPE, STRING, 0, 0)
|
||||||
|
|
||||||
#endif /* !JS_TRACER */
|
#endif /* !JS_TRACER */
|
||||||
@@ -3061,6 +3056,7 @@ js_EqualStrings(JSString *str1, JSString *str2)
|
|||||||
|
|
||||||
return JS_TRUE;
|
return JS_TRUE;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(extern, BOOL, js_EqualStrings, STRING, STRING, 1, 1)
|
||||||
|
|
||||||
int32 JS_FASTCALL
|
int32 JS_FASTCALL
|
||||||
js_CompareStrings(JSString *str1, JSString *str2)
|
js_CompareStrings(JSString *str1, JSString *str2)
|
||||||
@@ -3086,6 +3082,7 @@ js_CompareStrings(JSString *str1, JSString *str2)
|
|||||||
}
|
}
|
||||||
return (intN)(l1 - l2);
|
return (intN)(l1 - l2);
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(extern, INT32, js_CompareStrings, STRING, STRING, 1, 1)
|
||||||
|
|
||||||
size_t
|
size_t
|
||||||
js_strlen(const jschar *s)
|
js_strlen(const jschar *s)
|
||||||
|
|||||||
@@ -623,8 +623,9 @@ js_AttemptCompilation(JSTraceMonitor* tm, JSObject* globalObj, jsbytecode* pc)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JS_DEFINE_CALLINFO_1(static, DOUBLE, i2f, INT32, 1, 1)
|
// Forward declarations.
|
||||||
JS_DEFINE_CALLINFO_1(static, DOUBLE, u2f, UINT32, 1, 1)
|
JS_DEFINE_CALLINFO_1(static, DOUBLE, i2f, INT32, 1, 1)
|
||||||
|
JS_DEFINE_CALLINFO_1(static, DOUBLE, u2f, UINT32, 1, 1)
|
||||||
|
|
||||||
static bool isi2f(LInsp i)
|
static bool isi2f(LInsp i)
|
||||||
{
|
{
|
||||||
@@ -727,88 +728,87 @@ static bool overflowSafe(LIns* i)
|
|||||||
|
|
||||||
/* soft float support */
|
/* soft float support */
|
||||||
|
|
||||||
JS_DEFINE_CALLINFO_1(static, DOUBLE, fneg, DOUBLE, 1, 1)
|
static jsdouble FASTCALL
|
||||||
JS_DEFINE_CALLINFO_2(static, INT32, fcmpeq, DOUBLE, DOUBLE, 1, 1)
|
|
||||||
JS_DEFINE_CALLINFO_2(static, INT32, fcmplt, DOUBLE, DOUBLE, 1, 1)
|
|
||||||
JS_DEFINE_CALLINFO_2(static, INT32, fcmple, DOUBLE, DOUBLE, 1, 1)
|
|
||||||
JS_DEFINE_CALLINFO_2(static, INT32, fcmpgt, DOUBLE, DOUBLE, 1, 1)
|
|
||||||
JS_DEFINE_CALLINFO_2(static, INT32, fcmpge, DOUBLE, DOUBLE, 1, 1)
|
|
||||||
JS_DEFINE_CALLINFO_2(static, DOUBLE, fmul, DOUBLE, DOUBLE, 1, 1)
|
|
||||||
JS_DEFINE_CALLINFO_2(static, DOUBLE, fadd, DOUBLE, DOUBLE, 1, 1)
|
|
||||||
JS_DEFINE_CALLINFO_2(static, DOUBLE, fdiv, DOUBLE, DOUBLE, 1, 1)
|
|
||||||
JS_DEFINE_CALLINFO_2(static, DOUBLE, fsub, DOUBLE, DOUBLE, 1, 1)
|
|
||||||
|
|
||||||
jsdouble FASTCALL
|
|
||||||
fneg(jsdouble x)
|
fneg(jsdouble x)
|
||||||
{
|
{
|
||||||
return -x;
|
return -x;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_1(static, DOUBLE, fneg, DOUBLE, 1, 1)
|
||||||
|
|
||||||
jsdouble FASTCALL
|
static jsdouble FASTCALL
|
||||||
i2f(int32 i)
|
i2f(int32 i)
|
||||||
{
|
{
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
jsdouble FASTCALL
|
static jsdouble FASTCALL
|
||||||
u2f(jsuint u)
|
u2f(jsuint u)
|
||||||
{
|
{
|
||||||
return u;
|
return u;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32 FASTCALL
|
static int32 FASTCALL
|
||||||
fcmpeq(jsdouble x, jsdouble y)
|
fcmpeq(jsdouble x, jsdouble y)
|
||||||
{
|
{
|
||||||
return x==y;
|
return x==y;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(static, INT32, fcmpeq, DOUBLE, DOUBLE, 1, 1)
|
||||||
|
|
||||||
int32 FASTCALL
|
static int32 FASTCALL
|
||||||
fcmplt(jsdouble x, jsdouble y)
|
fcmplt(jsdouble x, jsdouble y)
|
||||||
{
|
{
|
||||||
return x < y;
|
return x < y;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(static, INT32, fcmplt, DOUBLE, DOUBLE, 1, 1)
|
||||||
|
|
||||||
int32 FASTCALL
|
static int32 FASTCALL
|
||||||
fcmple(jsdouble x, jsdouble y)
|
fcmple(jsdouble x, jsdouble y)
|
||||||
{
|
{
|
||||||
return x <= y;
|
return x <= y;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(static, INT32, fcmple, DOUBLE, DOUBLE, 1, 1)
|
||||||
|
|
||||||
int32 FASTCALL
|
static int32 FASTCALL
|
||||||
fcmpgt(jsdouble x, jsdouble y)
|
fcmpgt(jsdouble x, jsdouble y)
|
||||||
{
|
{
|
||||||
return x > y;
|
return x > y;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(static, INT32, fcmpgt, DOUBLE, DOUBLE, 1, 1)
|
||||||
|
|
||||||
int32 FASTCALL
|
static int32 FASTCALL
|
||||||
fcmpge(jsdouble x, jsdouble y)
|
fcmpge(jsdouble x, jsdouble y)
|
||||||
{
|
{
|
||||||
return x >= y;
|
return x >= y;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(static, INT32, fcmpge, DOUBLE, DOUBLE, 1, 1)
|
||||||
|
|
||||||
jsdouble FASTCALL
|
static jsdouble FASTCALL
|
||||||
fmul(jsdouble x, jsdouble y)
|
fmul(jsdouble x, jsdouble y)
|
||||||
{
|
{
|
||||||
return x * y;
|
return x * y;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(static, DOUBLE, fmul, DOUBLE, DOUBLE, 1, 1)
|
||||||
|
|
||||||
jsdouble FASTCALL
|
static jsdouble FASTCALL
|
||||||
fadd(jsdouble x, jsdouble y)
|
fadd(jsdouble x, jsdouble y)
|
||||||
{
|
{
|
||||||
return x + y;
|
return x + y;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(static, DOUBLE, fadd, DOUBLE, DOUBLE, 1, 1)
|
||||||
|
|
||||||
jsdouble FASTCALL
|
static jsdouble FASTCALL
|
||||||
fdiv(jsdouble x, jsdouble y)
|
fdiv(jsdouble x, jsdouble y)
|
||||||
{
|
{
|
||||||
return x / y;
|
return x / y;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(static, DOUBLE, fdiv, DOUBLE, DOUBLE, 1, 1)
|
||||||
|
|
||||||
jsdouble FASTCALL
|
static jsdouble FASTCALL
|
||||||
fsub(jsdouble x, jsdouble y)
|
fsub(jsdouble x, jsdouble y)
|
||||||
{
|
{
|
||||||
return x - y;
|
return x - y;
|
||||||
}
|
}
|
||||||
|
JS_DEFINE_CALLINFO_2(static, DOUBLE, fsub, DOUBLE, DOUBLE, 1, 1)
|
||||||
|
|
||||||
class SoftFloatFilter: public LirWriter
|
class SoftFloatFilter: public LirWriter
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user