X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=vm%2FInlineNative.h;h=fe14f8bf8afbd9f73f4cf8017d62f0e2cfa0472d;hb=c5d0614f778e0f26db913fdc7320f08e9417e984;hp=4ca90e2fe494bc5a404420c528acd46734013277;hpb=e86fd9b6bdc709bd3ec9662bc353d55eb38ca36e;p=android-x86%2Fdalvik.git diff --git a/vm/InlineNative.h b/vm/InlineNative.h index 4ca90e2fe..fe14f8bf8 100644 --- a/vm/InlineNative.h +++ b/vm/InlineNative.h @@ -17,8 +17,8 @@ /* * Inlined native functions. */ -#ifndef _DALVIK_INLINENATIVE -#define _DALVIK_INLINENATIVE +#ifndef DALVIK_INLINENATIVE_H_ +#define DALVIK_INLINENATIVE_H_ /* startup/shutdown */ bool dvmInlineNativeStartup(void); @@ -45,19 +45,19 @@ typedef bool (*InlineOp4Func)(u4 arg0, u4 arg1, u4 arg2, u4 arg3, * generate assembly code that knows how many args it needs and has the * target address embedded. */ -typedef struct InlineOperation { +struct InlineOperation { InlineOp4Func func; /* MUST be first entry */ const char* classDescriptor; const char* methodName; const char* methodSignature; -} InlineOperation; +}; /* - * Must be kept in sync w/ gDvmInlineOpsTable in InlineNative.c + * Must be kept in sync w/ gDvmInlineOpsTable in InlineNative.cpp * * You should also add a test to libcore's IntrinsicTest. */ -typedef enum NativeInlineOps { +enum NativeInlineOps { INLINE_EMPTYINLINEMETHOD = 0, INLINE_STRING_CHARAT = 1, INLINE_STRING_COMPARETO = 2, @@ -80,7 +80,14 @@ typedef enum NativeInlineOps { INLINE_DOUBLE_TO_LONG_BITS = 19, INLINE_DOUBLE_TO_RAW_LONG_BITS = 20, INLINE_LONG_BITS_TO_DOUBLE = 21, -} NativeInlineOps; + INLINE_STRICT_MATH_ABS_INT = 22, + INLINE_STRICT_MATH_ABS_LONG = 23, + INLINE_STRICT_MATH_ABS_FLOAT = 24, + INLINE_STRICT_MATH_ABS_DOUBLE = 25, + INLINE_STRICT_MATH_MIN_INT = 26, + INLINE_STRICT_MATH_MAX_INT = 27, + INLINE_STRICT_MATH_SQRT = 28, +}; /* * Get the inlineops table. @@ -119,6 +126,75 @@ bool dvmPerformInlineOp4Dbg(u4 arg0, u4 arg1, u4 arg2, u4 arg3, /* * Return method & populate the table on first use. */ -Method* dvmResolveInlineNative(int opIndex); +extern "C" Method* dvmResolveInlineNative(int opIndex); -#endif /*_DALVIK_INLINENATIVE*/ +/* + * The actual inline native definitions. + */ +bool javaLangString_charAt(u4 arg0, u4 arg1, u4 arg2, u4 arg3, + JValue* pResult); + +bool javaLangString_compareTo(u4 arg0, u4 arg1, u4 arg2, u4 arg3, + JValue* pResult); + +bool javaLangString_equals(u4 arg0, u4 arg1, u4 arg2, u4 arg3, + JValue* pResult); + +bool javaLangString_length(u4 arg0, u4 arg1, u4 arg2, u4 arg3, + JValue* pResult); + +bool javaLangString_isEmpty(u4 arg0, u4 arg1, u4 arg2, u4 arg3, + JValue* pResult); + +bool javaLangString_fastIndexOf_II(u4 arg0, u4 arg1, u4 arg2, u4 arg3, + JValue* pResult); + +bool javaLangMath_abs_int(u4 arg0, u4 arg1, u4 arg2, u4 arg3, + JValue* pResult); + +bool javaLangMath_abs_long(u4 arg0, u4 arg1, u4 arg2, u4 arg3, + JValue* pResult); + +bool javaLangMath_abs_float(u4 arg0, u4 arg1, u4 arg2, u4 arg3, + JValue* pResult); + +bool javaLangMath_abs_double(u4 arg0, u4 arg1, u4 arg2, u4 arg3, + JValue* pResult); + +bool javaLangMath_min_int(u4 arg0, u4 arg1, u4 arg2, u4 arg3, + JValue* pResult); + +bool javaLangMath_max_int(u4 arg0, u4 arg1, u4 arg2, u4 arg3, + JValue* pResult); + +bool javaLangMath_sqrt(u4 arg0, u4 arg1, u4 arg2, u4 arg3, + JValue* pResult); + +bool javaLangMath_cos(u4 arg0, u4 arg1, u4 arg2, u4 arg3, + JValue* pResult); + +bool javaLangMath_sin(u4 arg0, u4 arg1, u4 arg2, u4 arg3, + JValue* pResult); + +bool javaLangFloat_floatToIntBits(u4 arg0, u4 arg1, u4 arg2, u4 arg, + JValue* pResult); + +bool javaLangFloat_floatToRawIntBits(u4 arg0, u4 arg1, u4 arg2, u4 arg, + JValue* pResult); + +bool javaLangFloat_intBitsToFloat(u4 arg0, u4 arg1, u4 arg2, u4 arg, + JValue* pResult); + +bool javaLangDouble_doubleToLongBits(u4 arg0, u4 arg1, u4 arg2, u4 arg, + JValue* pResult); + +bool javaLangDouble_longBitsToDouble(u4 arg0, u4 arg1, u4 arg2, u4 arg, + JValue* pResult); + +bool javaLangDouble_doubleToRawLongBits(u4 arg0, u4 arg1, u4 arg2, + u4 arg, JValue* pResult); + +bool javaLangDouble_longBitsToDouble(u4 arg0, u4 arg1, u4 arg2, u4 arg, + JValue* pResult); + +#endif // DALVIK_INLINENATIVE_H_