diff options
| -rw-r--r-- | runtime/arch/arm/quick_entrypoints_arm.S | 4 | ||||
| -rw-r--r-- | runtime/arch/arm64/quick_entrypoints_arm64.S | 4 | ||||
| -rw-r--r-- | runtime/arch/mips/quick_entrypoints_mips.S | 3 | ||||
| -rw-r--r-- | runtime/arch/mips64/quick_entrypoints_mips64.S | 3 | ||||
| -rw-r--r-- | runtime/arch/x86/quick_entrypoints_x86.S | 3 | ||||
| -rw-r--r-- | runtime/arch/x86_64/quick_entrypoints_x86_64.S | 3 | ||||
| -rw-r--r-- | runtime/entrypoints/quick/quick_field_entrypoints.cc | 90 |
7 files changed, 106 insertions, 4 deletions
diff --git a/runtime/arch/arm/quick_entrypoints_arm.S b/runtime/arch/arm/quick_entrypoints_arm.S index 6ec9c48b92..c09baea72a 100644 --- a/runtime/arch/arm/quick_entrypoints_arm.S +++ b/runtime/arch/arm/quick_entrypoints_arm.S @@ -1026,8 +1026,8 @@ ONE_ARG_SAVE_EVERYTHING_DOWNCALL_FOR_CLINIT art_quick_initialize_type, artInitia ONE_ARG_SAVE_EVERYTHING_DOWNCALL art_quick_initialize_type_and_verify_access, artInitializeTypeAndVerifyAccessFromCode ONE_ARG_SAVE_EVERYTHING_DOWNCALL art_quick_resolve_string, artResolveStringFromCode -// Note: Functions `art{Get,Set}<Kind>{Static,Instance>FromCompiledCode` are -// defined by macros in runtime/entrypoints/quick/quick_field_entrypoints.cc. +// Note: Functions `art{Get,Set}<Kind>{Static,Instance}FromCompiledCode` are +// defined with a macro in runtime/entrypoints/quick/quick_field_entrypoints.cc. /* * Called by managed code to resolve a static field and load a non-wide value. diff --git a/runtime/arch/arm64/quick_entrypoints_arm64.S b/runtime/arch/arm64/quick_entrypoints_arm64.S index 47efeb9200..96a1cadab9 100644 --- a/runtime/arch/arm64/quick_entrypoints_arm64.S +++ b/runtime/arch/arm64/quick_entrypoints_arm64.S @@ -1638,8 +1638,8 @@ ONE_ARG_SAVE_EVERYTHING_DOWNCALL_FOR_CLINIT art_quick_initialize_type, artInitia ONE_ARG_SAVE_EVERYTHING_DOWNCALL art_quick_initialize_type_and_verify_access, artInitializeTypeAndVerifyAccessFromCode ONE_ARG_SAVE_EVERYTHING_DOWNCALL art_quick_resolve_string, artResolveStringFromCode -// Note: Functions `art{Get,Set}<Kind>{Static,Instance>FromCompiledCode` are -// defined by macros in runtime/entrypoints/quick/quick_field_entrypoints.cc. +// Note: Functions `art{Get,Set}<Kind>{Static,Instance}FromCompiledCode` are +// defined with a macro in runtime/entrypoints/quick/quick_field_entrypoints.cc. ONE_ARG_REF_DOWNCALL art_quick_get_boolean_static, artGetBooleanStaticFromCompiledCode, RETURN_OR_DELIVER_PENDING_EXCEPTION_X1 ONE_ARG_REF_DOWNCALL art_quick_get_byte_static, artGetByteStaticFromCompiledCode, RETURN_OR_DELIVER_PENDING_EXCEPTION_X1 diff --git a/runtime/arch/mips/quick_entrypoints_mips.S b/runtime/arch/mips/quick_entrypoints_mips.S index fc77a641b3..b2f7e10f52 100644 --- a/runtime/arch/mips/quick_entrypoints_mips.S +++ b/runtime/arch/mips/quick_entrypoints_mips.S @@ -1637,6 +1637,9 @@ END \name /* * Called by managed code to resolve a static/instance field and load/store a value. + * + * Note: Functions `art{Get,Set}<Kind>{Static,Instance}FromCompiledCode` are + * defined with a macro in runtime/entrypoints/quick/quick_field_entrypoints.cc. */ ONE_ARG_REF_DOWNCALL art_quick_get_byte_static, artGetByteStaticFromCompiledCode, RETURN_IF_NO_EXCEPTION ONE_ARG_REF_DOWNCALL art_quick_get_boolean_static, artGetBooleanStaticFromCompiledCode, RETURN_IF_NO_EXCEPTION diff --git a/runtime/arch/mips64/quick_entrypoints_mips64.S b/runtime/arch/mips64/quick_entrypoints_mips64.S index 3fb83d9232..63f4f6cb8c 100644 --- a/runtime/arch/mips64/quick_entrypoints_mips64.S +++ b/runtime/arch/mips64/quick_entrypoints_mips64.S @@ -1565,6 +1565,9 @@ END \name /* * Called by managed code to resolve a static/instance field and load/store a value. + * + * Note: Functions `art{Get,Set}<Kind>{Static,Instance}FromCompiledCode` are + * defined with a macro in runtime/entrypoints/quick/quick_field_entrypoints.cc. */ ONE_ARG_REF_DOWNCALL art_quick_get_byte_static, artGetByteStaticFromCompiledCode, RETURN_IF_NO_EXCEPTION ONE_ARG_REF_DOWNCALL art_quick_get_boolean_static, artGetBooleanStaticFromCompiledCode, RETURN_IF_NO_EXCEPTION diff --git a/runtime/arch/x86/quick_entrypoints_x86.S b/runtime/arch/x86/quick_entrypoints_x86.S index a46ceeba12..93cb6656dc 100644 --- a/runtime/arch/x86/quick_entrypoints_x86.S +++ b/runtime/arch/x86/quick_entrypoints_x86.S @@ -1709,6 +1709,9 @@ DEFINE_FUNCTION art_quick_lushr ret END_FUNCTION art_quick_lushr +// Note: Functions `art{Get,Set}<Kind>{Static,Instance}FromCompiledCode` are +// defined with a macro in runtime/entrypoints/quick/quick_field_entrypoints.cc. + ONE_ARG_REF_DOWNCALL art_quick_get_boolean_static, artGetBooleanStaticFromCompiledCode, RETURN_OR_DELIVER_PENDING_EXCEPTION ONE_ARG_REF_DOWNCALL art_quick_get_byte_static, artGetByteStaticFromCompiledCode, RETURN_OR_DELIVER_PENDING_EXCEPTION ONE_ARG_REF_DOWNCALL art_quick_get_char_static, artGetCharStaticFromCompiledCode, RETURN_OR_DELIVER_PENDING_EXCEPTION diff --git a/runtime/arch/x86_64/quick_entrypoints_x86_64.S b/runtime/arch/x86_64/quick_entrypoints_x86_64.S index 463e5a279f..85f972309b 100644 --- a/runtime/arch/x86_64/quick_entrypoints_x86_64.S +++ b/runtime/arch/x86_64/quick_entrypoints_x86_64.S @@ -1594,6 +1594,9 @@ UNIMPLEMENTED art_quick_lshl UNIMPLEMENTED art_quick_lshr UNIMPLEMENTED art_quick_lushr +// Note: Functions `art{Get,Set}<Kind>{Static,Instance}FromCompiledCode` are +// defined with a macro in runtime/entrypoints/quick/quick_field_entrypoints.cc. + THREE_ARG_REF_DOWNCALL art_quick_set8_instance, artSet8InstanceFromCompiledCode, RETURN_IF_EAX_ZERO THREE_ARG_REF_DOWNCALL art_quick_set16_instance, artSet16InstanceFromCompiledCode, RETURN_IF_EAX_ZERO THREE_ARG_REF_DOWNCALL art_quick_set32_instance, artSet32InstanceFromCompiledCode, RETURN_IF_EAX_ZERO diff --git a/runtime/entrypoints/quick/quick_field_entrypoints.cc b/runtime/entrypoints/quick/quick_field_entrypoints.cc index b13103df03..7d34d2402a 100644 --- a/runtime/entrypoints/quick/quick_field_entrypoints.cc +++ b/runtime/entrypoints/quick/quick_field_entrypoints.cc @@ -68,6 +68,11 @@ static ArtMethod* GetReferrer(Thread* self) REQUIRES_SHARED(Locks::mutator_lock_ return GetCalleeSaveMethodCallerAndOuterMethod(self, CalleeSaveType::kSaveRefsOnly).caller; } +// Macro used to define this set of functions: +// +// art{Get,Set}<Kind>{Static,Instance}FromCode +// art{Get,Set}<Kind>{Static,Instance}FromCompiledCode +// #define ART_GET_FIELD_FROM_CODE(Kind, PrimitiveType, RetType, SetType, \ PrimitiveOrObject, IsObject, Ptr) \ extern "C" RetType artGet ## Kind ## StaticFromCode(uint32_t field_idx, \ @@ -216,15 +221,100 @@ static ArtMethod* GetReferrer(Thread* self) REQUIRES_SHARED(Locks::mutator_lock_ field_idx, obj, new_value, GetReferrer(self), self); \ } +// Define these functions: +// +// artGetByteStaticFromCode +// artGetByteInstanceFromCode +// artSetByteStaticFromCode +// artSetByteInstanceFromCode +// artGetByteStaticFromCompiledCode +// artGetByteInstanceFromCompiledCode +// artSetByteStaticFromCompiledCode +// artSetByteInstanceFromCompiledCode +// ART_GET_FIELD_FROM_CODE(Byte, int8_t, ssize_t, uint32_t, Primitive, false, ) + +// Define these functions: +// +// artGetBooleanStaticFromCode +// artGetBooleanInstanceFromCode +// artSetBooleanStaticFromCode +// artSetBooleanInstanceFromCode +// artGetBooleanStaticFromCompiledCode +// artGetBooleanInstanceFromCompiledCode +// artSetBooleanStaticFromCompiledCode +// artSetBooleanInstanceFromCompiledCode +// ART_GET_FIELD_FROM_CODE(Boolean, int8_t, size_t, uint32_t, Primitive, false, ) + +// Define these functions: +// +// artGetShortStaticFromCode +// artGetShortInstanceFromCode +// artSetShortStaticFromCode +// artSetShortInstanceFromCode +// artGetShortStaticFromCompiledCode +// artGetShortInstanceFromCompiledCode +// artSetShortStaticFromCompiledCode +// artSetShortInstanceFromCompiledCode +// ART_GET_FIELD_FROM_CODE(Short, int16_t, ssize_t, uint16_t, Primitive, false, ) + +// Define these functions: +// +// artGetCharStaticFromCode +// artGetCharInstanceFromCode +// artSetCharStaticFromCode +// artSetCharInstanceFromCode +// artGetCharStaticFromCompiledCode +// artGetCharInstanceFromCompiledCode +// artSetCharStaticFromCompiledCode +// artSetCharInstanceFromCompiledCode +// ART_GET_FIELD_FROM_CODE(Char, int16_t, size_t, uint16_t, Primitive, false, ) + +// Define these functions: +// +// artGet32StaticFromCode +// artGet32InstanceFromCode +// artSet32StaticFromCode +// artSet32InstanceFromCode +// artGet32StaticFromCompiledCode +// artGet32InstanceFromCompiledCode +// artSet32StaticFromCompiledCode +// artSet32InstanceFromCompiledCode +// ART_GET_FIELD_FROM_CODE(32, int32_t, size_t, uint32_t, Primitive, false, ) + +// Define these functions: +// +// artGet64StaticFromCode +// artGet64InstanceFromCode +// artSet64StaticFromCode +// artSet64InstanceFromCode +// artGet64StaticFromCompiledCode +// artGet64InstanceFromCompiledCode +// artSet64StaticFromCompiledCode +// artSet64InstanceFromCompiledCode +// ART_GET_FIELD_FROM_CODE(64, int64_t, uint64_t, uint64_t, Primitive, false, ) + +// Define these functions: +// +// artGetObjStaticFromCode +// artGetObjInstanceFromCode +// artSetObjStaticFromCode +// artSetObjInstanceFromCode +// artGetObjStaticFromCompiledCode +// artGetObjInstanceFromCompiledCode +// artSetObjStaticFromCompiledCode +// artSetObjInstanceFromCompiledCode +// ART_GET_FIELD_FROM_CODE(Obj, mirror::HeapReference<mirror::Object>, mirror::Object*, mirror::Object*, Object, true, .Ptr()) +#undef ART_GET_FIELD_FROM_CODE + // To cut on the number of entrypoints, we have shared entries for // byte/boolean and char/short for setting an instance or static field. We just |