summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/arch/arm/quick_entrypoints_arm.S4
-rw-r--r--runtime/arch/arm64/quick_entrypoints_arm64.S4
-rw-r--r--runtime/arch/mips/quick_entrypoints_mips.S3
-rw-r--r--runtime/arch/mips64/quick_entrypoints_mips64.S3
-rw-r--r--runtime/arch/x86/quick_entrypoints_x86.S3
-rw-r--r--runtime/arch/x86_64/quick_entrypoints_x86_64.S3
-rw-r--r--runtime/entrypoints/quick/quick_field_entrypoints.cc90
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