зеркало из https://github.com/mozilla/gecko-dev.git
kill builtins.tbl (479888, r=jorendorff).
This commit is contained in:
Родитель
99885c3531
Коммит
d2bca72b4d
|
@ -214,7 +214,6 @@ ifdef ENABLE_JIT
|
|||
VPATH += $(srcdir)/nanojit
|
||||
|
||||
INSTALLED_HEADERS += \
|
||||
builtins.tbl \
|
||||
jsbuiltins.h \
|
||||
Assembler.h \
|
||||
LIR.h \
|
||||
|
|
|
@ -252,10 +252,6 @@ OTHER_HFILES = \
|
|||
jskeyword.tbl \
|
||||
$(NULL)
|
||||
|
||||
ifdef ENABLE_JIT
|
||||
OTHER_HFILES += builtins.tbl
|
||||
endif
|
||||
|
||||
ifndef PREBUILT_CPUCFG
|
||||
OTHER_HFILES += $(OBJDIR)/jsautocfg.h
|
||||
endif
|
||||
|
|
|
@ -930,6 +930,7 @@ js_Array_dense_setelem(JSContext* cx, JSObject* obj, jsint i, jsval v)
|
|||
obj->dslots[u] = v;
|
||||
return JS_TRUE;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_4(extern, BOOL, js_Array_dense_setelem, CONTEXT, OBJECT, INT32, JSVAL, 0, 0)
|
||||
#endif
|
||||
|
||||
static JSBool
|
||||
|
@ -2314,6 +2315,7 @@ js_ArrayCompPush(JSContext *cx, JSObject *obj, jsval v)
|
|||
obj->dslots[length] = v;
|
||||
return JS_TRUE;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_3(extern, BOOL, js_ArrayCompPush, CONTEXT, OBJECT, JSVAL, 0, 0)
|
||||
|
||||
#ifdef JS_TRACER
|
||||
static jsval FASTCALL
|
||||
|
@ -3271,6 +3273,7 @@ js_NewEmptyArray(JSContext* cx, JSObject* proto)
|
|||
obj->dslots = NULL;
|
||||
return obj;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(extern, OBJECT, js_NewEmptyArray, CONTEXT, OBJECT, 0, 0)
|
||||
|
||||
JSObject* FASTCALL
|
||||
js_NewUninitializedArray(JSContext* cx, JSObject* proto, uint32 len)
|
||||
|
@ -3284,6 +3287,7 @@ js_NewUninitializedArray(JSContext* cx, JSObject* proto, uint32 len)
|
|||
return NULL;
|
||||
return obj;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_3(extern, OBJECT, js_NewUninitializedArray, CONTEXT, OBJECT, UINT32, 0, 0)
|
||||
|
||||
#endif /* JS_TRACER */
|
||||
|
||||
|
@ -3561,7 +3565,3 @@ js_ArrayToJSDoubleBuffer(JSContext *cx, JSObject *obj, jsuint offset, jsuint cou
|
|||
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);
|
||||
return r;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(extern, DOUBLE, js_dmod, DOUBLE, DOUBLE, 1, 1)
|
||||
|
||||
int32 FASTCALL
|
||||
js_imod(int32 a, int32 b)
|
||||
|
@ -102,6 +103,7 @@ js_imod(int32 a, int32 b)
|
|||
int r = a % b;
|
||||
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
|
||||
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 v;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(extern, JSVAL, js_BoxDouble, CONTEXT, DOUBLE, 1, 1)
|
||||
|
||||
jsval FASTCALL
|
||||
js_BoxInt32(JSContext* cx, int32 i)
|
||||
|
@ -132,6 +135,7 @@ js_BoxInt32(JSContext* cx, int32 i)
|
|||
return JSVAL_ERROR_COOKIE;
|
||||
return v;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(extern, JSVAL, js_BoxInt32, CONTEXT, INT32, 1, 1)
|
||||
|
||||
jsdouble FASTCALL
|
||||
js_UnboxDouble(jsval v)
|
||||
|
@ -140,6 +144,7 @@ js_UnboxDouble(jsval v)
|
|||
return (jsdouble)JSVAL_TO_INT(v);
|
||||
return *JSVAL_TO_DOUBLE(v);
|
||||
}
|
||||
JS_DEFINE_CALLINFO_1(extern, DOUBLE, js_UnboxDouble, JSVAL, 1, 1)
|
||||
|
||||
int32 FASTCALL
|
||||
js_UnboxInt32(jsval v)
|
||||
|
@ -148,18 +153,21 @@ js_UnboxInt32(jsval v)
|
|||
return JSVAL_TO_INT(v);
|
||||
return js_DoubleToECMAInt32(*JSVAL_TO_DOUBLE(v));
|
||||
}
|
||||
JS_DEFINE_CALLINFO_1(extern, INT32, js_UnboxInt32, JSVAL, 1, 1)
|
||||
|
||||
int32 FASTCALL
|
||||
js_DoubleToInt32(jsdouble d)
|
||||
{
|
||||
return js_DoubleToECMAInt32(d);
|
||||
}
|
||||
JS_DEFINE_CALLINFO_1(extern, INT32, js_DoubleToInt32, DOUBLE, 1, 1)
|
||||
|
||||
uint32 FASTCALL
|
||||
js_DoubleToUint32(jsdouble d)
|
||||
{
|
||||
return js_DoubleToECMAUint32(d);
|
||||
}
|
||||
JS_DEFINE_CALLINFO_1(extern, UINT32, js_DoubleToUint32, DOUBLE, 1, 1)
|
||||
|
||||
jsdouble FASTCALL
|
||||
js_StringToNumber(JSContext* cx, JSString* str)
|
||||
|
@ -178,6 +186,7 @@ js_StringToNumber(JSContext* cx, JSString* str)
|
|||
}
|
||||
return d;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(extern, DOUBLE, js_StringToNumber, CONTEXT, STRING, 1, 1)
|
||||
|
||||
int32 FASTCALL
|
||||
js_StringToInt32(JSContext* cx, JSString* str)
|
||||
|
@ -192,6 +201,7 @@ js_StringToInt32(JSContext* cx, JSString* str)
|
|||
return 0;
|
||||
return js_DoubleToECMAInt32(d);
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(extern, INT32, js_StringToInt32, CONTEXT, STRING, 1, 1)
|
||||
|
||||
SideExit* FASTCALL
|
||||
js_CallTree(InterpState* state, Fragment* f)
|
||||
|
@ -227,6 +237,7 @@ js_CallTree(InterpState* state, Fragment* f)
|
|||
|
||||
return lr;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(extern, SIDEEXIT, js_CallTree, INTERPSTATE, FRAGMENT, 0, 0)
|
||||
|
||||
JSBool FASTCALL
|
||||
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);
|
||||
return JS_FALSE;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_3(extern, BOOL, js_AddProperty, CONTEXT, OBJECT, SCOPEPROP, 0, 0)
|
||||
|
||||
static JSBool
|
||||
HasProperty(JSContext* cx, JSObject* obj, jsid id)
|
||||
|
@ -317,6 +329,7 @@ js_HasNamedProperty(JSContext* cx, JSObject* obj, JSString* idstr)
|
|||
|
||||
return HasProperty(cx, obj, id);
|
||||
}
|
||||
JS_DEFINE_CALLINFO_3(extern, BOOL, js_HasNamedProperty, CONTEXT, OBJECT, STRING, 0, 0)
|
||||
|
||||
JSBool FASTCALL
|
||||
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);
|
||||
}
|
||||
JS_DEFINE_CALLINFO_3(extern, BOOL, js_HasNamedPropertyInt32, CONTEXT, OBJECT, INT32, 0, 0)
|
||||
|
||||
jsval FASTCALL
|
||||
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 v;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_3(extern, JSVAL, js_CallGetter, CONTEXT, OBJECT, SCOPEPROP, 0, 0)
|
||||
|
||||
JSString* FASTCALL
|
||||
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));
|
||||
return ATOM_TO_STRING(cx->runtime->atomState.typeAtoms[type]);
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(extern, STRING, js_TypeOfObject, CONTEXT, OBJECT, 1, 1)
|
||||
|
||||
JSString* FASTCALL
|
||||
js_TypeOfBoolean(JSContext* cx, int32 unboxed)
|
||||
|
@ -354,6 +370,7 @@ js_TypeOfBoolean(JSContext* cx, int32 unboxed)
|
|||
JSType type = JS_TypeOfValue(cx, boxed);
|
||||
return ATOM_TO_STRING(cx->runtime->atomState.typeAtoms[type]);
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(extern, STRING, js_TypeOfBoolean, CONTEXT, INT32, 1, 1)
|
||||
|
||||
jsdouble FASTCALL
|
||||
js_BooleanOrUndefinedToNumber(JSContext* cx, int32 unboxed)
|
||||
|
@ -363,6 +380,7 @@ js_BooleanOrUndefinedToNumber(JSContext* cx, int32 unboxed)
|
|||
JS_ASSERT(unboxed == JS_TRUE || unboxed == JS_FALSE);
|
||||
return unboxed;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(extern, DOUBLE, js_BooleanOrUndefinedToNumber, CONTEXT, INT32, 1, 1)
|
||||
|
||||
JSString* FASTCALL
|
||||
js_BooleanOrUndefinedToString(JSContext *cx, int32 unboxed)
|
||||
|
@ -370,12 +388,14 @@ js_BooleanOrUndefinedToString(JSContext *cx, int32 unboxed)
|
|||
JS_ASSERT(uint32(unboxed) <= 2);
|
||||
return ATOM_TO_STRING(cx->runtime->atomState.booleanAtoms[unboxed]);
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(extern, STRING, js_BooleanOrUndefinedToString, CONTEXT, INT32, 1, 1)
|
||||
|
||||
JSObject* FASTCALL
|
||||
js_Arguments(JSContext* cx)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_1(extern, OBJECT, js_Arguments, CONTEXT, 0, 0)
|
||||
|
||||
JSObject* FASTCALL
|
||||
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;
|
||||
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
|
||||
|
||||
/*
|
||||
* Declare a C function named <op> and a CallInfo struct named <op>_callinfo so the
|
||||
* tracer can call it. |linkage| controls the visibility of both the function
|
||||
* and the CallInfo global. It can be extern, static, or FRIEND, which
|
||||
* specifies JS_FRIEND_API linkage for the function.
|
||||
* This macro is used for builtin functions that can be called from JITted
|
||||
* code. It declares a C function named <op> and a CallInfo struct named
|
||||
* <op>_ci so the tracer can call it. The <N> in JS_DEFINE_CALLINFO_<N> is
|
||||
* 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) \
|
||||
_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)
|
||||
|
||||
/* Defined in jsbuiltins.cpp. */
|
||||
#define BUILTIN1(linkage, rt, op, at0, cse, fold) JS_DECLARE_CALLINFO(op)
|
||||
#define BUILTIN2(linkage, rt, op, at0, at1, cse, fold) JS_DECLARE_CALLINFO(op)
|
||||
#define BUILTIN3(linkage, rt, op, at0, at1, at2, cse, fold) JS_DECLARE_CALLINFO(op)
|
||||
#define BUILTIN4(linkage, rt, op, at0, at1, at2, at3, cse, fold) JS_DECLARE_CALLINFO(op)
|
||||
#define BUILTIN5(linkage, rt, op, at0, at1, at2, at3, at4, cse, fold) JS_DECLARE_CALLINFO(op)
|
||||
#include "builtins.tbl"
|
||||
#undef BUILTIN
|
||||
#undef BUILTIN1
|
||||
#undef BUILTIN2
|
||||
#undef BUILTIN3
|
||||
#undef BUILTIN4
|
||||
#undef BUILTIN5
|
||||
JS_DECLARE_CALLINFO(js_BoxDouble)
|
||||
JS_DECLARE_CALLINFO(js_BoxInt32)
|
||||
JS_DECLARE_CALLINFO(js_UnboxDouble)
|
||||
JS_DECLARE_CALLINFO(js_UnboxInt32)
|
||||
JS_DECLARE_CALLINFO(js_dmod)
|
||||
JS_DECLARE_CALLINFO(js_imod)
|
||||
JS_DECLARE_CALLINFO(js_DoubleToInt32)
|
||||
JS_DECLARE_CALLINFO(js_DoubleToUint32)
|
||||
|
||||
JS_DECLARE_CALLINFO(js_StringToNumber)
|
||||
JS_DECLARE_CALLINFO(js_StringToInt32)
|
||||
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___ */
|
||||
|
|
|
@ -443,6 +443,7 @@ js_CloseIterator(JSContext *cx, jsval v)
|
|||
#endif
|
||||
return JS_TRUE;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(FRIEND, BOOL, js_CloseIterator, CONTEXT, JSVAL, 0, 0)
|
||||
|
||||
static JSBool
|
||||
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 JSSTRING_CHARS(str)[i];
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(extern, INT32, js_String_p_charCodeAt_int, STRING, INT32, 1, 1)
|
||||
|
||||
jsdouble FASTCALL
|
||||
js_String_p_charCodeAt0(JSString* str)
|
||||
|
@ -1021,6 +1022,10 @@ js_String_p_charCodeAt0(JSString* str)
|
|||
return jsdouble(JSSTRING_CHARS(str)[0]);
|
||||
}
|
||||
|
||||
/*
|
||||
* The FuncFilter replaces the generic double version of charCodeAt with the
|
||||
* integer fast path if appropriate.
|
||||
*/
|
||||
int32 FASTCALL
|
||||
js_String_p_charCodeAt0_int(JSString* str)
|
||||
{
|
||||
|
@ -1028,13 +1033,7 @@ js_String_p_charCodeAt0_int(JSString* str)
|
|||
return 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_2(extern, INT32, js_String_p_charCodeAt_int, STRING, INT32, 1, 1)
|
||||
#endif
|
||||
|
||||
jsint
|
||||
|
@ -2383,9 +2382,6 @@ js_String_getelem(JSContext* cx, JSString* str, int32 i)
|
|||
}
|
||||
#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,
|
||||
(2, (extern, STRING_RETRY, String_p_toString, CONTEXT, THIS, 1, 1)))
|
||||
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);
|
||||
return obj;
|
||||
}
|
||||
|
||||
JS_DEFINE_CALLINFO_3(extern, OBJECT, js_String_tn, CONTEXT, CALLEE_PROTOTYPE, STRING, 0, 0)
|
||||
|
||||
#endif /* !JS_TRACER */
|
||||
|
@ -3061,6 +3056,7 @@ js_EqualStrings(JSString *str1, JSString *str2)
|
|||
|
||||
return JS_TRUE;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(extern, BOOL, js_EqualStrings, STRING, STRING, 1, 1)
|
||||
|
||||
int32 JS_FASTCALL
|
||||
js_CompareStrings(JSString *str1, JSString *str2)
|
||||
|
@ -3086,6 +3082,7 @@ js_CompareStrings(JSString *str1, JSString *str2)
|
|||
}
|
||||
return (intN)(l1 - l2);
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(extern, INT32, js_CompareStrings, STRING, STRING, 1, 1)
|
||||
|
||||
size_t
|
||||
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)
|
||||
JS_DEFINE_CALLINFO_1(static, DOUBLE, u2f, UINT32, 1, 1)
|
||||
// Forward declarations.
|
||||
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)
|
||||
{
|
||||
|
@ -727,88 +728,87 @@ static bool overflowSafe(LIns* i)
|
|||
|
||||
/* soft float support */
|
||||
|
||||
JS_DEFINE_CALLINFO_1(static, DOUBLE, fneg, DOUBLE, 1, 1)
|
||||
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
|
||||
static jsdouble FASTCALL
|
||||
fneg(jsdouble x)
|
||||
{
|
||||
return -x;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_1(static, DOUBLE, fneg, DOUBLE, 1, 1)
|
||||
|
||||
jsdouble FASTCALL
|
||||
static jsdouble FASTCALL
|
||||
i2f(int32 i)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
|
||||
jsdouble FASTCALL
|
||||
static jsdouble FASTCALL
|
||||
u2f(jsuint u)
|
||||
{
|
||||
return u;
|
||||
}
|
||||
|
||||
int32 FASTCALL
|
||||
static int32 FASTCALL
|
||||
fcmpeq(jsdouble x, jsdouble 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)
|
||||
{
|
||||
return x < y;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(static, INT32, fcmplt, DOUBLE, DOUBLE, 1, 1)
|
||||
|
||||
int32 FASTCALL
|
||||
static int32 FASTCALL
|
||||
fcmple(jsdouble x, jsdouble 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)
|
||||
{
|
||||
return x > y;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(static, INT32, fcmpgt, DOUBLE, DOUBLE, 1, 1)
|
||||
|
||||
int32 FASTCALL
|
||||
static int32 FASTCALL
|
||||
fcmpge(jsdouble x, jsdouble 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)
|
||||
{
|
||||
return x * y;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(static, DOUBLE, fmul, DOUBLE, DOUBLE, 1, 1)
|
||||
|
||||
jsdouble FASTCALL
|
||||
static jsdouble FASTCALL
|
||||
fadd(jsdouble x, jsdouble 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)
|
||||
{
|
||||
return x / y;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(static, DOUBLE, fdiv, DOUBLE, DOUBLE, 1, 1)
|
||||
|
||||
jsdouble FASTCALL
|
||||
static jsdouble FASTCALL
|
||||
fsub(jsdouble x, jsdouble y)
|
||||
{
|
||||
return x - y;
|
||||
}
|
||||
JS_DEFINE_CALLINFO_2(static, DOUBLE, fsub, DOUBLE, DOUBLE, 1, 1)
|
||||
|
||||
class SoftFloatFilter: public LirWriter
|
||||
{
|
||||
|
|
Загрузка…
Ссылка в новой задаче