Set types of quick entry points to void*.
The quick entry points are not intended to be called from C++, so let's
set their types to void* so that any attempt to call them will fail
to compile. Introduce accessors to make it easier to set the fields.
Change-Id: I7fae304100f55e96924c31a983ef0a705302d58d
diff --git a/runtime/arch/arm/entrypoints_init_arm.cc b/runtime/arch/arm/entrypoints_init_arm.cc
index bc985d6..b0b0064 100644
--- a/runtime/arch/arm/entrypoints_init_arm.cc
+++ b/runtime/arch/arm/entrypoints_init_arm.cc
@@ -78,18 +78,18 @@
extern "C" int64_t __aeabi_ldivmod(int64_t, int64_t);
void UpdateReadBarrierEntrypoints(QuickEntryPoints* qpoints, bool is_active) {
- qpoints->pReadBarrierMarkReg00 = is_active ? art_quick_read_barrier_mark_reg00 : nullptr;
- qpoints->pReadBarrierMarkReg01 = is_active ? art_quick_read_barrier_mark_reg01 : nullptr;
- qpoints->pReadBarrierMarkReg02 = is_active ? art_quick_read_barrier_mark_reg02 : nullptr;
- qpoints->pReadBarrierMarkReg03 = is_active ? art_quick_read_barrier_mark_reg03 : nullptr;
- qpoints->pReadBarrierMarkReg04 = is_active ? art_quick_read_barrier_mark_reg04 : nullptr;
- qpoints->pReadBarrierMarkReg05 = is_active ? art_quick_read_barrier_mark_reg05 : nullptr;
- qpoints->pReadBarrierMarkReg06 = is_active ? art_quick_read_barrier_mark_reg06 : nullptr;
- qpoints->pReadBarrierMarkReg07 = is_active ? art_quick_read_barrier_mark_reg07 : nullptr;
- qpoints->pReadBarrierMarkReg08 = is_active ? art_quick_read_barrier_mark_reg08 : nullptr;
- qpoints->pReadBarrierMarkReg09 = is_active ? art_quick_read_barrier_mark_reg09 : nullptr;
- qpoints->pReadBarrierMarkReg10 = is_active ? art_quick_read_barrier_mark_reg10 : nullptr;
- qpoints->pReadBarrierMarkReg11 = is_active ? art_quick_read_barrier_mark_reg11 : nullptr;
+ qpoints->SetReadBarrierMarkReg00(is_active ? art_quick_read_barrier_mark_reg00 : nullptr);
+ qpoints->SetReadBarrierMarkReg01(is_active ? art_quick_read_barrier_mark_reg01 : nullptr);
+ qpoints->SetReadBarrierMarkReg02(is_active ? art_quick_read_barrier_mark_reg02 : nullptr);
+ qpoints->SetReadBarrierMarkReg03(is_active ? art_quick_read_barrier_mark_reg03 : nullptr);
+ qpoints->SetReadBarrierMarkReg04(is_active ? art_quick_read_barrier_mark_reg04 : nullptr);
+ qpoints->SetReadBarrierMarkReg05(is_active ? art_quick_read_barrier_mark_reg05 : nullptr);
+ qpoints->SetReadBarrierMarkReg06(is_active ? art_quick_read_barrier_mark_reg06 : nullptr);
+ qpoints->SetReadBarrierMarkReg07(is_active ? art_quick_read_barrier_mark_reg07 : nullptr);
+ qpoints->SetReadBarrierMarkReg08(is_active ? art_quick_read_barrier_mark_reg08 : nullptr);
+ qpoints->SetReadBarrierMarkReg09(is_active ? art_quick_read_barrier_mark_reg09 : nullptr);
+ qpoints->SetReadBarrierMarkReg10(is_active ? art_quick_read_barrier_mark_reg10 : nullptr);
+ qpoints->SetReadBarrierMarkReg11(is_active ? art_quick_read_barrier_mark_reg11 : nullptr);
if (kUseReadBarrier && kUseBakerReadBarrier) {
// For the alignment check, strip the Thumb mode bit.
@@ -120,8 +120,8 @@
DCHECK_EQ(BAKER_MARK_INTROSPECTION_INTRINSIC_CAS_ENTRYPOINT_OFFSET, intrinsic_cas_diff);
// The register 12, i.e. IP, is reserved, so there is no art_quick_read_barrier_mark_reg12.
// We're using the entry to hold a pointer to the introspection entrypoint instead.
- qpoints->pReadBarrierMarkReg12 =
- is_active ? art_quick_read_barrier_mark_introspection : nullptr;
+ qpoints->SetReadBarrierMarkReg12(
+ is_active ? art_quick_read_barrier_mark_introspection : nullptr);
}
}
@@ -131,72 +131,72 @@
DefaultInitEntryPoints(jpoints, qpoints, monitor_jni_entry_exit);
// Cast
- qpoints->pInstanceofNonTrivial = artInstanceOfFromCode;
- qpoints->pCheckInstanceOf = art_quick_check_instance_of;
+ qpoints->SetInstanceofNonTrivial(artInstanceOfFromCode);
+ qpoints->SetCheckInstanceOf(art_quick_check_instance_of);
// Math
- qpoints->pIdivmod = __aeabi_idivmod;
- qpoints->pLdiv = __aeabi_ldivmod;
- qpoints->pLmod = __aeabi_ldivmod; // result returned in r2:r3
- qpoints->pLmul = art_quick_mul_long;
- qpoints->pShlLong = art_quick_shl_long;
- qpoints->pShrLong = art_quick_shr_long;
- qpoints->pUshrLong = art_quick_ushr_long;
- qpoints->pFmod = art_quick_fmod;
- qpoints->pFmodf = art_quick_fmodf;
- qpoints->pD2l = art_quick_d2l;
- qpoints->pF2l = art_quick_f2l;
- qpoints->pL2f = art_quick_l2f;
+ qpoints->SetIdivmod(__aeabi_idivmod);
+ qpoints->SetLdiv(__aeabi_ldivmod);
+ qpoints->SetLmod(__aeabi_ldivmod); // result returned in r2:r3
+ qpoints->SetLmul(art_quick_mul_long);
+ qpoints->SetShlLong(art_quick_shl_long);
+ qpoints->SetShrLong(art_quick_shr_long);
+ qpoints->SetUshrLong(art_quick_ushr_long);
+ qpoints->SetFmod(art_quick_fmod);
+ qpoints->SetFmodf(art_quick_fmodf);
+ qpoints->SetD2l(art_quick_d2l);
+ qpoints->SetF2l(art_quick_f2l);
+ qpoints->SetL2f(art_quick_l2f);
// More math.
- qpoints->pCos = cos;
- qpoints->pSin = sin;
- qpoints->pAcos = acos;
- qpoints->pAsin = asin;
- qpoints->pAtan = atan;
- qpoints->pAtan2 = atan2;
- qpoints->pPow = pow;
- qpoints->pCbrt = cbrt;
- qpoints->pCosh = cosh;
- qpoints->pExp = exp;
- qpoints->pExpm1 = expm1;
- qpoints->pHypot = hypot;
- qpoints->pLog = log;
- qpoints->pLog10 = log10;
- qpoints->pNextAfter = nextafter;
- qpoints->pSinh = sinh;
- qpoints->pTan = tan;
- qpoints->pTanh = tanh;
+ qpoints->SetCos(cos);
+ qpoints->SetSin(sin);
+ qpoints->SetAcos(acos);
+ qpoints->SetAsin(asin);
+ qpoints->SetAtan(atan);
+ qpoints->SetAtan2(atan2);
+ qpoints->SetPow(pow);
+ qpoints->SetCbrt(cbrt);
+ qpoints->SetCosh(cosh);
+ qpoints->SetExp(exp);
+ qpoints->SetExpm1(expm1);
+ qpoints->SetHypot(hypot);
+ qpoints->SetLog(log);
+ qpoints->SetLog10(log10);
+ qpoints->SetNextAfter(nextafter);
+ qpoints->SetSinh(sinh);
+ qpoints->SetTan(tan);
+ qpoints->SetTanh(tanh);
// Intrinsics
- qpoints->pIndexOf = art_quick_indexof;
+ qpoints->SetIndexOf(art_quick_indexof);
// The ARM StringCompareTo intrinsic does not call the runtime.
- qpoints->pStringCompareTo = nullptr;
- qpoints->pMemcpy = memcpy;
+ qpoints->SetStringCompareTo(nullptr);
+ qpoints->SetMemcpy(memcpy);
// Read barrier.
UpdateReadBarrierEntrypoints(qpoints, /*is_active=*/ false);
- qpoints->pReadBarrierMarkReg12 = nullptr; // Cannot use register 12 (IP) to pass arguments.
- qpoints->pReadBarrierMarkReg13 = nullptr; // Cannot use register 13 (SP) to pass arguments.
- qpoints->pReadBarrierMarkReg14 = nullptr; // Cannot use register 14 (LR) to pass arguments.
- qpoints->pReadBarrierMarkReg15 = nullptr; // Cannot use register 15 (PC) to pass arguments.
+ qpoints->SetReadBarrierMarkReg12(nullptr); // Cannot use register 12 (IP) to pass arguments.
+ qpoints->SetReadBarrierMarkReg13(nullptr); // Cannot use register 13 (SP) to pass arguments.
+ qpoints->SetReadBarrierMarkReg14(nullptr); // Cannot use register 14 (LR) to pass arguments.
+ qpoints->SetReadBarrierMarkReg15(nullptr); // Cannot use register 15 (PC) to pass arguments.
// ARM has only 16 core registers.
- qpoints->pReadBarrierMarkReg16 = nullptr;
- qpoints->pReadBarrierMarkReg17 = nullptr;
- qpoints->pReadBarrierMarkReg18 = nullptr;
- qpoints->pReadBarrierMarkReg19 = nullptr;
- qpoints->pReadBarrierMarkReg20 = nullptr;
- qpoints->pReadBarrierMarkReg21 = nullptr;
- qpoints->pReadBarrierMarkReg22 = nullptr;
- qpoints->pReadBarrierMarkReg23 = nullptr;
- qpoints->pReadBarrierMarkReg24 = nullptr;
- qpoints->pReadBarrierMarkReg25 = nullptr;
- qpoints->pReadBarrierMarkReg26 = nullptr;
- qpoints->pReadBarrierMarkReg27 = nullptr;
- qpoints->pReadBarrierMarkReg28 = nullptr;
- qpoints->pReadBarrierMarkReg29 = nullptr;
- qpoints->pReadBarrierSlow = artReadBarrierSlow;
- qpoints->pReadBarrierForRootSlow = artReadBarrierForRootSlow;
+ qpoints->SetReadBarrierMarkReg16(nullptr);
+ qpoints->SetReadBarrierMarkReg17(nullptr);
+ qpoints->SetReadBarrierMarkReg18(nullptr);
+ qpoints->SetReadBarrierMarkReg19(nullptr);
+ qpoints->SetReadBarrierMarkReg20(nullptr);
+ qpoints->SetReadBarrierMarkReg21(nullptr);
+ qpoints->SetReadBarrierMarkReg22(nullptr);
+ qpoints->SetReadBarrierMarkReg23(nullptr);
+ qpoints->SetReadBarrierMarkReg24(nullptr);
+ qpoints->SetReadBarrierMarkReg25(nullptr);
+ qpoints->SetReadBarrierMarkReg26(nullptr);
+ qpoints->SetReadBarrierMarkReg27(nullptr);
+ qpoints->SetReadBarrierMarkReg28(nullptr);
+ qpoints->SetReadBarrierMarkReg29(nullptr);
+ qpoints->SetReadBarrierSlow(artReadBarrierSlow);
+ qpoints->SetReadBarrierForRootSlow(artReadBarrierForRootSlow);
}
} // namespace art
diff --git a/runtime/arch/arm64/entrypoints_init_arm64.cc b/runtime/arch/arm64/entrypoints_init_arm64.cc
index 29f6c4e..7db2528 100644
--- a/runtime/arch/arm64/entrypoints_init_arm64.cc
+++ b/runtime/arch/arm64/entrypoints_init_arm64.cc
@@ -86,34 +86,34 @@
// have less core registers (resp. 16, 8 and 16).
// TODO: ARM/ARM64 now use introspection entrypoints. Consider
// reducing the number of entrypoints to those needed by x86-64.
- qpoints->pReadBarrierMarkReg00 = is_active ? art_quick_read_barrier_mark_reg00 : nullptr;
- qpoints->pReadBarrierMarkReg01 = is_active ? art_quick_read_barrier_mark_reg01 : nullptr;
- qpoints->pReadBarrierMarkReg02 = is_active ? art_quick_read_barrier_mark_reg02 : nullptr;
- qpoints->pReadBarrierMarkReg03 = is_active ? art_quick_read_barrier_mark_reg03 : nullptr;
- qpoints->pReadBarrierMarkReg04 = is_active ? art_quick_read_barrier_mark_reg04 : nullptr;
- qpoints->pReadBarrierMarkReg05 = is_active ? art_quick_read_barrier_mark_reg05 : nullptr;
- qpoints->pReadBarrierMarkReg06 = is_active ? art_quick_read_barrier_mark_reg06 : nullptr;
- qpoints->pReadBarrierMarkReg07 = is_active ? art_quick_read_barrier_mark_reg07 : nullptr;
- qpoints->pReadBarrierMarkReg08 = is_active ? art_quick_read_barrier_mark_reg08 : nullptr;
- qpoints->pReadBarrierMarkReg09 = is_active ? art_quick_read_barrier_mark_reg09 : nullptr;
- qpoints->pReadBarrierMarkReg10 = is_active ? art_quick_read_barrier_mark_reg10 : nullptr;
- qpoints->pReadBarrierMarkReg11 = is_active ? art_quick_read_barrier_mark_reg11 : nullptr;
- qpoints->pReadBarrierMarkReg12 = is_active ? art_quick_read_barrier_mark_reg12 : nullptr;
- qpoints->pReadBarrierMarkReg13 = is_active ? art_quick_read_barrier_mark_reg13 : nullptr;
- qpoints->pReadBarrierMarkReg14 = is_active ? art_quick_read_barrier_mark_reg14 : nullptr;
- qpoints->pReadBarrierMarkReg15 = is_active ? art_quick_read_barrier_mark_reg15 : nullptr;
- qpoints->pReadBarrierMarkReg17 = is_active ? art_quick_read_barrier_mark_reg17 : nullptr;
- qpoints->pReadBarrierMarkReg19 = is_active ? art_quick_read_barrier_mark_reg19 : nullptr;
- qpoints->pReadBarrierMarkReg20 = is_active ? art_quick_read_barrier_mark_reg20 : nullptr;
- qpoints->pReadBarrierMarkReg21 = is_active ? art_quick_read_barrier_mark_reg21 : nullptr;
- qpoints->pReadBarrierMarkReg22 = is_active ? art_quick_read_barrier_mark_reg22 : nullptr;
- qpoints->pReadBarrierMarkReg23 = is_active ? art_quick_read_barrier_mark_reg23 : nullptr;
- qpoints->pReadBarrierMarkReg24 = is_active ? art_quick_read_barrier_mark_reg24 : nullptr;
- qpoints->pReadBarrierMarkReg25 = is_active ? art_quick_read_barrier_mark_reg25 : nullptr;
- qpoints->pReadBarrierMarkReg26 = is_active ? art_quick_read_barrier_mark_reg26 : nullptr;
- qpoints->pReadBarrierMarkReg27 = is_active ? art_quick_read_barrier_mark_reg27 : nullptr;
- qpoints->pReadBarrierMarkReg28 = is_active ? art_quick_read_barrier_mark_reg28 : nullptr;
- qpoints->pReadBarrierMarkReg29 = is_active ? art_quick_read_barrier_mark_reg29 : nullptr;
+ qpoints->SetReadBarrierMarkReg00(is_active ? art_quick_read_barrier_mark_reg00 : nullptr);
+ qpoints->SetReadBarrierMarkReg01(is_active ? art_quick_read_barrier_mark_reg01 : nullptr);
+ qpoints->SetReadBarrierMarkReg02(is_active ? art_quick_read_barrier_mark_reg02 : nullptr);
+ qpoints->SetReadBarrierMarkReg03(is_active ? art_quick_read_barrier_mark_reg03 : nullptr);
+ qpoints->SetReadBarrierMarkReg04(is_active ? art_quick_read_barrier_mark_reg04 : nullptr);
+ qpoints->SetReadBarrierMarkReg05(is_active ? art_quick_read_barrier_mark_reg05 : nullptr);
+ qpoints->SetReadBarrierMarkReg06(is_active ? art_quick_read_barrier_mark_reg06 : nullptr);
+ qpoints->SetReadBarrierMarkReg07(is_active ? art_quick_read_barrier_mark_reg07 : nullptr);
+ qpoints->SetReadBarrierMarkReg08(is_active ? art_quick_read_barrier_mark_reg08 : nullptr);
+ qpoints->SetReadBarrierMarkReg09(is_active ? art_quick_read_barrier_mark_reg09 : nullptr);
+ qpoints->SetReadBarrierMarkReg10(is_active ? art_quick_read_barrier_mark_reg10 : nullptr);
+ qpoints->SetReadBarrierMarkReg11(is_active ? art_quick_read_barrier_mark_reg11 : nullptr);
+ qpoints->SetReadBarrierMarkReg12(is_active ? art_quick_read_barrier_mark_reg12 : nullptr);
+ qpoints->SetReadBarrierMarkReg13(is_active ? art_quick_read_barrier_mark_reg13 : nullptr);
+ qpoints->SetReadBarrierMarkReg14(is_active ? art_quick_read_barrier_mark_reg14 : nullptr);
+ qpoints->SetReadBarrierMarkReg15(is_active ? art_quick_read_barrier_mark_reg15 : nullptr);
+ qpoints->SetReadBarrierMarkReg17(is_active ? art_quick_read_barrier_mark_reg17 : nullptr);
+ qpoints->SetReadBarrierMarkReg19(is_active ? art_quick_read_barrier_mark_reg19 : nullptr);
+ qpoints->SetReadBarrierMarkReg20(is_active ? art_quick_read_barrier_mark_reg20 : nullptr);
+ qpoints->SetReadBarrierMarkReg21(is_active ? art_quick_read_barrier_mark_reg21 : nullptr);
+ qpoints->SetReadBarrierMarkReg22(is_active ? art_quick_read_barrier_mark_reg22 : nullptr);
+ qpoints->SetReadBarrierMarkReg23(is_active ? art_quick_read_barrier_mark_reg23 : nullptr);
+ qpoints->SetReadBarrierMarkReg24(is_active ? art_quick_read_barrier_mark_reg24 : nullptr);
+ qpoints->SetReadBarrierMarkReg25(is_active ? art_quick_read_barrier_mark_reg25 : nullptr);
+ qpoints->SetReadBarrierMarkReg26(is_active ? art_quick_read_barrier_mark_reg26 : nullptr);
+ qpoints->SetReadBarrierMarkReg27(is_active ? art_quick_read_barrier_mark_reg27 : nullptr);
+ qpoints->SetReadBarrierMarkReg28(is_active ? art_quick_read_barrier_mark_reg28 : nullptr);
+ qpoints->SetReadBarrierMarkReg29(is_active ? art_quick_read_barrier_mark_reg29 : nullptr);
// Check that array switch cases are at appropriate offsets from the introspection entrypoint.
DCHECK_ALIGNED(art_quick_read_barrier_mark_introspection, 512u);
@@ -128,7 +128,7 @@
DCHECK_EQ(BAKER_MARK_INTROSPECTION_GC_ROOT_ENTRYPOINT_OFFSET, gc_roots_diff);
// The register 16, i.e. IP0, is reserved, so there is no art_quick_read_barrier_mark_reg16.
// We're using the entry to hold a pointer to the introspection entrypoint instead.
- qpoints->pReadBarrierMarkReg16 = is_active ? art_quick_read_barrier_mark_introspection : nullptr;
+ qpoints->SetReadBarrierMarkReg16(is_active ? art_quick_read_barrier_mark_introspection : nullptr);
}
void InitEntryPoints(JniEntryPoints* jpoints,
@@ -137,62 +137,62 @@
DefaultInitEntryPoints(jpoints, qpoints, monitor_jni_entry_exit);
// Cast
- qpoints->pInstanceofNonTrivial = artInstanceOfFromCode;
- qpoints->pCheckInstanceOf = art_quick_check_instance_of;
+ qpoints->SetInstanceofNonTrivial(artInstanceOfFromCode);
+ qpoints->SetCheckInstanceOf(art_quick_check_instance_of);
// Math
// TODO null entrypoints not needed for ARM64 - generate inline.
- qpoints->pCmpgDouble = nullptr;
- qpoints->pCmpgFloat = nullptr;
- qpoints->pCmplDouble = nullptr;
- qpoints->pCmplFloat = nullptr;
- qpoints->pFmod = fmod;
- qpoints->pL2d = nullptr;
- qpoints->pFmodf = fmodf;
- qpoints->pL2f = nullptr;
- qpoints->pD2iz = nullptr;
- qpoints->pF2iz = nullptr;
- qpoints->pIdivmod = nullptr;
- qpoints->pD2l = nullptr;
- qpoints->pF2l = nullptr;
- qpoints->pLdiv = nullptr;
- qpoints->pLmod = nullptr;
- qpoints->pLmul = nullptr;
- qpoints->pShlLong = nullptr;
- qpoints->pShrLong = nullptr;
- qpoints->pUshrLong = nullptr;
+ qpoints->SetCmpgDouble(nullptr);
+ qpoints->SetCmpgFloat(nullptr);
+ qpoints->SetCmplDouble(nullptr);
+ qpoints->SetCmplFloat(nullptr);
+ qpoints->SetFmod(fmod);
+ qpoints->SetL2d(nullptr);
+ qpoints->SetFmodf(fmodf);
+ qpoints->SetL2f(nullptr);
+ qpoints->SetD2iz(nullptr);
+ qpoints->SetF2iz(nullptr);
+ qpoints->SetIdivmod(nullptr);
+ qpoints->SetD2l(nullptr);
+ qpoints->SetF2l(nullptr);
+ qpoints->SetLdiv(nullptr);
+ qpoints->SetLmod(nullptr);
+ qpoints->SetLmul(nullptr);
+ qpoints->SetShlLong(nullptr);
+ qpoints->SetShrLong(nullptr);
+ qpoints->SetUshrLong(nullptr);
// More math.
- qpoints->pCos = cos;
- qpoints->pSin = sin;
- qpoints->pAcos = acos;
- qpoints->pAsin = asin;
- qpoints->pAtan = atan;
- qpoints->pAtan2 = atan2;
- qpoints->pPow = pow;
- qpoints->pCbrt = cbrt;
- qpoints->pCosh = cosh;
- qpoints->pExp = exp;
- qpoints->pExpm1 = expm1;
- qpoints->pHypot = hypot;
- qpoints->pLog = log;
- qpoints->pLog10 = log10;
- qpoints->pNextAfter = nextafter;
- qpoints->pSinh = sinh;
- qpoints->pTan = tan;
- qpoints->pTanh = tanh;
+ qpoints->SetCos(cos);
+ qpoints->SetSin(sin);
+ qpoints->SetAcos(acos);
+ qpoints->SetAsin(asin);
+ qpoints->SetAtan(atan);
+ qpoints->SetAtan2(atan2);
+ qpoints->SetPow(pow);
+ qpoints->SetCbrt(cbrt);
+ qpoints->SetCosh(cosh);
+ qpoints->SetExp(exp);
+ qpoints->SetExpm1(expm1);
+ qpoints->SetHypot(hypot);
+ qpoints->SetLog(log);
+ qpoints->SetLog10(log10);
+ qpoints->SetNextAfter(nextafter);
+ qpoints->SetSinh(sinh);
+ qpoints->SetTan(tan);
+ qpoints->SetTanh(tanh);
// Intrinsics
- qpoints->pIndexOf = art_quick_indexof;
+ qpoints->SetIndexOf(art_quick_indexof);
// The ARM64 StringCompareTo intrinsic does not call the runtime.
- qpoints->pStringCompareTo = nullptr;
- qpoints->pMemcpy = memcpy;
+ qpoints->SetStringCompareTo(nullptr);
+ qpoints->SetMemcpy(memcpy);
// Read barrier.
- qpoints->pReadBarrierMarkReg16 = nullptr; // IP0 is used as a temp by the asm stub.
+ qpoints->SetReadBarrierMarkReg16(nullptr); // IP0 is used as a temp by the asm stub.
UpdateReadBarrierEntrypoints(qpoints, /*is_active=*/ false);
- qpoints->pReadBarrierSlow = artReadBarrierSlow;
- qpoints->pReadBarrierForRootSlow = artReadBarrierForRootSlow;
+ qpoints->SetReadBarrierSlow(artReadBarrierSlow);
+ qpoints->SetReadBarrierForRootSlow(artReadBarrierForRootSlow);
}
} // namespace art
diff --git a/runtime/arch/x86/entrypoints_init_x86.cc b/runtime/arch/x86/entrypoints_init_x86.cc
index 27c14c6..01853cc 100644
--- a/runtime/arch/x86/entrypoints_init_x86.cc
+++ b/runtime/arch/x86/entrypoints_init_x86.cc
@@ -45,13 +45,13 @@
extern "C" mirror::Object* art_quick_read_barrier_for_root_slow(GcRoot<mirror::Object>*);
void UpdateReadBarrierEntrypoints(QuickEntryPoints* qpoints, bool is_active) {
- qpoints->pReadBarrierMarkReg00 = is_active ? art_quick_read_barrier_mark_reg00 : nullptr;
- qpoints->pReadBarrierMarkReg01 = is_active ? art_quick_read_barrier_mark_reg01 : nullptr;
- qpoints->pReadBarrierMarkReg02 = is_active ? art_quick_read_barrier_mark_reg02 : nullptr;
- qpoints->pReadBarrierMarkReg03 = is_active ? art_quick_read_barrier_mark_reg03 : nullptr;
- qpoints->pReadBarrierMarkReg05 = is_active ? art_quick_read_barrier_mark_reg05 : nullptr;
- qpoints->pReadBarrierMarkReg06 = is_active ? art_quick_read_barrier_mark_reg06 : nullptr;
- qpoints->pReadBarrierMarkReg07 = is_active ? art_quick_read_barrier_mark_reg07 : nullptr;
+ qpoints->SetReadBarrierMarkReg00(is_active ? art_quick_read_barrier_mark_reg00 : nullptr);
+ qpoints->SetReadBarrierMarkReg01(is_active ? art_quick_read_barrier_mark_reg01 : nullptr);
+ qpoints->SetReadBarrierMarkReg02(is_active ? art_quick_read_barrier_mark_reg02 : nullptr);
+ qpoints->SetReadBarrierMarkReg03(is_active ? art_quick_read_barrier_mark_reg03 : nullptr);
+ qpoints->SetReadBarrierMarkReg05(is_active ? art_quick_read_barrier_mark_reg05 : nullptr);
+ qpoints->SetReadBarrierMarkReg06(is_active ? art_quick_read_barrier_mark_reg06 : nullptr);
+ qpoints->SetReadBarrierMarkReg07(is_active ? art_quick_read_barrier_mark_reg07 : nullptr);
}
void InitEntryPoints(JniEntryPoints* jpoints,
@@ -60,72 +60,72 @@
DefaultInitEntryPoints(jpoints, qpoints, monitor_jni_entry_exit);
// Cast
- qpoints->pInstanceofNonTrivial = art_quick_instance_of;
- qpoints->pCheckInstanceOf = art_quick_check_instance_of;
+ qpoints->SetInstanceofNonTrivial(art_quick_instance_of);
+ qpoints->SetCheckInstanceOf(art_quick_check_instance_of);
// More math.
- qpoints->pCos = cos;
- qpoints->pSin = sin;
- qpoints->pAcos = acos;
- qpoints->pAsin = asin;
- qpoints->pAtan = atan;
- qpoints->pAtan2 = atan2;
- qpoints->pPow = pow;
- qpoints->pCbrt = cbrt;
- qpoints->pCosh = cosh;
- qpoints->pExp = exp;
- qpoints->pExpm1 = expm1;
- qpoints->pHypot = hypot;
- qpoints->pLog = log;
- qpoints->pLog10 = log10;
- qpoints->pNextAfter = nextafter;
- qpoints->pSinh = sinh;
- qpoints->pTan = tan;
- qpoints->pTanh = tanh;
+ qpoints->SetCos(cos);
+ qpoints->SetSin(sin);
+ qpoints->SetAcos(acos);
+ qpoints->SetAsin(asin);
+ qpoints->SetAtan(atan);
+ qpoints->SetAtan2(atan2);
+ qpoints->SetPow(pow);
+ qpoints->SetCbrt(cbrt);
+ qpoints->SetCosh(cosh);
+ qpoints->SetExp(exp);
+ qpoints->SetExpm1(expm1);
+ qpoints->SetHypot(hypot);
+ qpoints->SetLog(log);
+ qpoints->SetLog10(log10);
+ qpoints->SetNextAfter(nextafter);
+ qpoints->SetSinh(sinh);
+ qpoints->SetTan(tan);
+ qpoints->SetTanh(tanh);
// Math
- qpoints->pD2l = art_quick_d2l;
- qpoints->pF2l = art_quick_f2l;
- qpoints->pLdiv = art_quick_ldiv;
- qpoints->pLmod = art_quick_lmod;
- qpoints->pLmul = art_quick_lmul;
- qpoints->pShlLong = art_quick_lshl;
- qpoints->pShrLong = art_quick_lshr;
- qpoints->pUshrLong = art_quick_lushr;
+ qpoints->SetD2l(art_quick_d2l);
+ qpoints->SetF2l(art_quick_f2l);
+ qpoints->SetLdiv(art_quick_ldiv);
+ qpoints->SetLmod(art_quick_lmod);
+ qpoints->SetLmul(art_quick_lmul);
+ qpoints->SetShlLong(art_quick_lshl);
+ qpoints->SetShrLong(art_quick_lshr);
+ qpoints->SetUshrLong(art_quick_lushr);
// Intrinsics
// qpoints->pIndexOf = nullptr; // Not needed on x86
- qpoints->pStringCompareTo = art_quick_string_compareto;
- qpoints->pMemcpy = art_quick_memcpy;
+ qpoints->SetStringCompareTo(art_quick_string_compareto);
+ qpoints->SetMemcpy(art_quick_memcpy);
// Read barrier.
UpdateReadBarrierEntrypoints(qpoints, /*is_active=*/ false);
- qpoints->pReadBarrierMarkReg04 = nullptr; // Cannot use register 4 (ESP) to pass arguments.
+ qpoints->SetReadBarrierMarkReg04(nullptr); // Cannot use register 4 (ESP) to pass arguments.
// x86 has only 8 core registers.
- qpoints->pReadBarrierMarkReg08 = nullptr;
- qpoints->pReadBarrierMarkReg09 = nullptr;
- qpoints->pReadBarrierMarkReg10 = nullptr;
- qpoints->pReadBarrierMarkReg11 = nullptr;
- qpoints->pReadBarrierMarkReg12 = nullptr;
- qpoints->pReadBarrierMarkReg13 = nullptr;
- qpoints->pReadBarrierMarkReg14 = nullptr;
- qpoints->pReadBarrierMarkReg15 = nullptr;
- qpoints->pReadBarrierMarkReg16 = nullptr;
- qpoints->pReadBarrierMarkReg17 = nullptr;
- qpoints->pReadBarrierMarkReg18 = nullptr;
- qpoints->pReadBarrierMarkReg19 = nullptr;
- qpoints->pReadBarrierMarkReg20 = nullptr;
- qpoints->pReadBarrierMarkReg21 = nullptr;
- qpoints->pReadBarrierMarkReg22 = nullptr;
- qpoints->pReadBarrierMarkReg23 = nullptr;
- qpoints->pReadBarrierMarkReg24 = nullptr;
- qpoints->pReadBarrierMarkReg25 = nullptr;
- qpoints->pReadBarrierMarkReg26 = nullptr;
- qpoints->pReadBarrierMarkReg27 = nullptr;
- qpoints->pReadBarrierMarkReg28 = nullptr;
- qpoints->pReadBarrierMarkReg29 = nullptr;
- qpoints->pReadBarrierSlow = art_quick_read_barrier_slow;
- qpoints->pReadBarrierForRootSlow = art_quick_read_barrier_for_root_slow;
+ qpoints->SetReadBarrierMarkReg08(nullptr);
+ qpoints->SetReadBarrierMarkReg09(nullptr);
+ qpoints->SetReadBarrierMarkReg10(nullptr);
+ qpoints->SetReadBarrierMarkReg11(nullptr);
+ qpoints->SetReadBarrierMarkReg12(nullptr);
+ qpoints->SetReadBarrierMarkReg13(nullptr);
+ qpoints->SetReadBarrierMarkReg14(nullptr);
+ qpoints->SetReadBarrierMarkReg15(nullptr);
+ qpoints->SetReadBarrierMarkReg16(nullptr);
+ qpoints->SetReadBarrierMarkReg17(nullptr);
+ qpoints->SetReadBarrierMarkReg18(nullptr);
+ qpoints->SetReadBarrierMarkReg19(nullptr);
+ qpoints->SetReadBarrierMarkReg20(nullptr);
+ qpoints->SetReadBarrierMarkReg21(nullptr);
+ qpoints->SetReadBarrierMarkReg22(nullptr);
+ qpoints->SetReadBarrierMarkReg23(nullptr);
+ qpoints->SetReadBarrierMarkReg24(nullptr);
+ qpoints->SetReadBarrierMarkReg25(nullptr);
+ qpoints->SetReadBarrierMarkReg26(nullptr);
+ qpoints->SetReadBarrierMarkReg27(nullptr);
+ qpoints->SetReadBarrierMarkReg28(nullptr);
+ qpoints->SetReadBarrierMarkReg29(nullptr);
+ qpoints->SetReadBarrierSlow(art_quick_read_barrier_slow);
+ qpoints->SetReadBarrierForRootSlow(art_quick_read_barrier_for_root_slow);
}
} // namespace art
diff --git a/runtime/arch/x86_64/entrypoints_init_x86_64.cc b/runtime/arch/x86_64/entrypoints_init_x86_64.cc
index 1359822..bf98979 100644
--- a/runtime/arch/x86_64/entrypoints_init_x86_64.cc
+++ b/runtime/arch/x86_64/entrypoints_init_x86_64.cc
@@ -56,21 +56,21 @@
extern "C" mirror::Object* art_quick_read_barrier_for_root_slow(GcRoot<mirror::Object>*);
void UpdateReadBarrierEntrypoints(QuickEntryPoints* qpoints, bool is_active) {
- qpoints->pReadBarrierMarkReg00 = is_active ? art_quick_read_barrier_mark_reg00 : nullptr;
- qpoints->pReadBarrierMarkReg01 = is_active ? art_quick_read_barrier_mark_reg01 : nullptr;
- qpoints->pReadBarrierMarkReg02 = is_active ? art_quick_read_barrier_mark_reg02 : nullptr;
- qpoints->pReadBarrierMarkReg03 = is_active ? art_quick_read_barrier_mark_reg03 : nullptr;
- qpoints->pReadBarrierMarkReg05 = is_active ? art_quick_read_barrier_mark_reg05 : nullptr;
- qpoints->pReadBarrierMarkReg06 = is_active ? art_quick_read_barrier_mark_reg06 : nullptr;
- qpoints->pReadBarrierMarkReg07 = is_active ? art_quick_read_barrier_mark_reg07 : nullptr;
- qpoints->pReadBarrierMarkReg08 = is_active ? art_quick_read_barrier_mark_reg08 : nullptr;
- qpoints->pReadBarrierMarkReg09 = is_active ? art_quick_read_barrier_mark_reg09 : nullptr;
- qpoints->pReadBarrierMarkReg10 = is_active ? art_quick_read_barrier_mark_reg10 : nullptr;
- qpoints->pReadBarrierMarkReg11 = is_active ? art_quick_read_barrier_mark_reg11 : nullptr;
- qpoints->pReadBarrierMarkReg12 = is_active ? art_quick_read_barrier_mark_reg12 : nullptr;
- qpoints->pReadBarrierMarkReg13 = is_active ? art_quick_read_barrier_mark_reg13 : nullptr;
- qpoints->pReadBarrierMarkReg14 = is_active ? art_quick_read_barrier_mark_reg14 : nullptr;
- qpoints->pReadBarrierMarkReg15 = is_active ? art_quick_read_barrier_mark_reg15 : nullptr;
+ qpoints->SetReadBarrierMarkReg00(is_active ? art_quick_read_barrier_mark_reg00 : nullptr);
+ qpoints->SetReadBarrierMarkReg01(is_active ? art_quick_read_barrier_mark_reg01 : nullptr);
+ qpoints->SetReadBarrierMarkReg02(is_active ? art_quick_read_barrier_mark_reg02 : nullptr);
+ qpoints->SetReadBarrierMarkReg03(is_active ? art_quick_read_barrier_mark_reg03 : nullptr);
+ qpoints->SetReadBarrierMarkReg05(is_active ? art_quick_read_barrier_mark_reg05 : nullptr);
+ qpoints->SetReadBarrierMarkReg06(is_active ? art_quick_read_barrier_mark_reg06 : nullptr);
+ qpoints->SetReadBarrierMarkReg07(is_active ? art_quick_read_barrier_mark_reg07 : nullptr);
+ qpoints->SetReadBarrierMarkReg08(is_active ? art_quick_read_barrier_mark_reg08 : nullptr);
+ qpoints->SetReadBarrierMarkReg09(is_active ? art_quick_read_barrier_mark_reg09 : nullptr);
+ qpoints->SetReadBarrierMarkReg10(is_active ? art_quick_read_barrier_mark_reg10 : nullptr);
+ qpoints->SetReadBarrierMarkReg11(is_active ? art_quick_read_barrier_mark_reg11 : nullptr);
+ qpoints->SetReadBarrierMarkReg12(is_active ? art_quick_read_barrier_mark_reg12 : nullptr);
+ qpoints->SetReadBarrierMarkReg13(is_active ? art_quick_read_barrier_mark_reg13 : nullptr);
+ qpoints->SetReadBarrierMarkReg14(is_active ? art_quick_read_barrier_mark_reg14 : nullptr);
+ qpoints->SetReadBarrierMarkReg15(is_active ? art_quick_read_barrier_mark_reg15 : nullptr);
}
void InitEntryPoints(JniEntryPoints* jpoints,
@@ -83,63 +83,63 @@
DefaultInitEntryPoints(jpoints, qpoints, monitor_jni_entry_exit);
// Cast
- qpoints->pInstanceofNonTrivial = art_quick_instance_of;
- qpoints->pCheckInstanceOf = art_quick_check_instance_of;
+ qpoints->SetInstanceofNonTrivial(art_quick_instance_of);
+ qpoints->SetCheckInstanceOf(art_quick_check_instance_of);
// More math.
- qpoints->pCos = cos;
- qpoints->pSin = sin;
- qpoints->pAcos = acos;
- qpoints->pAsin = asin;
- qpoints->pAtan = atan;
- qpoints->pAtan2 = atan2;
- qpoints->pPow = pow;
- qpoints->pCbrt = cbrt;
- qpoints->pCosh = cosh;
- qpoints->pExp = exp;
- qpoints->pExpm1 = expm1;
- qpoints->pHypot = hypot;
- qpoints->pLog = log;
- qpoints->pLog10 = log10;
- qpoints->pNextAfter = nextafter;
- qpoints->pSinh = sinh;
- qpoints->pTan = tan;
- qpoints->pTanh = tanh;
+ qpoints->SetCos(cos);
+ qpoints->SetSin(sin);
+ qpoints->SetAcos(acos);
+ qpoints->SetAsin(asin);
+ qpoints->SetAtan(atan);
+ qpoints->SetAtan2(atan2);
+ qpoints->SetPow(pow);
+ qpoints->SetCbrt(cbrt);
+ qpoints->SetCosh(cosh);
+ qpoints->SetExp(exp);
+ qpoints->SetExpm1(expm1);
+ qpoints->SetHypot(hypot);
+ qpoints->SetLog(log);
+ qpoints->SetLog10(log10);
+ qpoints->SetNextAfter(nextafter);
+ qpoints->SetSinh(sinh);
+ qpoints->SetTan(tan);
+ qpoints->SetTanh(tanh);
// Math
- qpoints->pD2l = art_d2l;
- qpoints->pF2l = art_f2l;
- qpoints->pLdiv = art_quick_ldiv;
- qpoints->pLmod = art_quick_lmod;
- qpoints->pLmul = art_quick_lmul;
- qpoints->pShlLong = art_quick_lshl;
- qpoints->pShrLong = art_quick_lshr;
- qpoints->pUshrLong = art_quick_lushr;
+ qpoints->SetD2l(art_d2l);
+ qpoints->SetF2l(art_f2l);
+ qpoints->SetLdiv(art_quick_ldiv);
+ qpoints->SetLmod(art_quick_lmod);
+ qpoints->SetLmul(art_quick_lmul);
+ qpoints->SetShlLong(art_quick_lshl);
+ qpoints->SetShrLong(art_quick_lshr);
+ qpoints->SetUshrLong(art_quick_lushr);
// Intrinsics
- qpoints->pStringCompareTo = art_quick_string_compareto;
- qpoints->pMemcpy = art_quick_memcpy;
+ qpoints->SetStringCompareTo(art_quick_string_compareto);
+ qpoints->SetMemcpy(art_quick_memcpy);
// Read barrier.
UpdateReadBarrierEntrypoints(qpoints, /*is_active=*/ false);
- qpoints->pReadBarrierMarkReg04 = nullptr; // Cannot use register 4 (RSP) to pass arguments.
+ qpoints->SetReadBarrierMarkReg04(nullptr); // Cannot use register 4 (RSP) to pass arguments.
// x86-64 has only 16 core registers.
- qpoints->pReadBarrierMarkReg16 = nullptr;
- qpoints->pReadBarrierMarkReg17 = nullptr;
- qpoints->pReadBarrierMarkReg18 = nullptr;
- qpoints->pReadBarrierMarkReg19 = nullptr;
- qpoints->pReadBarrierMarkReg20 = nullptr;
- qpoints->pReadBarrierMarkReg21 = nullptr;
- qpoints->pReadBarrierMarkReg22 = nullptr;
- qpoints->pReadBarrierMarkReg23 = nullptr;
- qpoints->pReadBarrierMarkReg24 = nullptr;
- qpoints->pReadBarrierMarkReg25 = nullptr;
- qpoints->pReadBarrierMarkReg26 = nullptr;
- qpoints->pReadBarrierMarkReg27 = nullptr;
- qpoints->pReadBarrierMarkReg28 = nullptr;
- qpoints->pReadBarrierMarkReg29 = nullptr;
- qpoints->pReadBarrierSlow = art_quick_read_barrier_slow;
- qpoints->pReadBarrierForRootSlow = art_quick_read_barrier_for_root_slow;
+ qpoints->SetReadBarrierMarkReg16(nullptr);
+ qpoints->SetReadBarrierMarkReg17(nullptr);
+ qpoints->SetReadBarrierMarkReg18(nullptr);
+ qpoints->SetReadBarrierMarkReg19(nullptr);
+ qpoints->SetReadBarrierMarkReg20(nullptr);
+ qpoints->SetReadBarrierMarkReg21(nullptr);
+ qpoints->SetReadBarrierMarkReg22(nullptr);
+ qpoints->SetReadBarrierMarkReg23(nullptr);
+ qpoints->SetReadBarrierMarkReg24(nullptr);
+ qpoints->SetReadBarrierMarkReg25(nullptr);
+ qpoints->SetReadBarrierMarkReg26(nullptr);
+ qpoints->SetReadBarrierMarkReg27(nullptr);
+ qpoints->SetReadBarrierMarkReg28(nullptr);
+ qpoints->SetReadBarrierMarkReg29(nullptr);
+ qpoints->SetReadBarrierSlow(art_quick_read_barrier_slow);
+ qpoints->SetReadBarrierForRootSlow(art_quick_read_barrier_for_root_slow);
#endif // __APPLE__
}
diff --git a/runtime/entrypoints/quick/quick_alloc_entrypoints.cc b/runtime/entrypoints/quick/quick_alloc_entrypoints.cc
index c5b4be5..7b3d849 100644
--- a/runtime/entrypoints/quick/quick_alloc_entrypoints.cc
+++ b/runtime/entrypoints/quick/quick_alloc_entrypoints.cc
@@ -165,31 +165,31 @@
extern "C" void* art_quick_alloc_string_from_string##suffix##_instrumented(void*); \
void SetQuickAllocEntryPoints##suffix(QuickEntryPoints* qpoints, bool instrumented) { \
if (instrumented) { \
- qpoints->pAllocArrayResolved = art_quick_alloc_array_resolved##suffix##_instrumented; \
- qpoints->pAllocArrayResolved8 = art_quick_alloc_array_resolved8##suffix##_instrumented; \
- qpoints->pAllocArrayResolved16 = art_quick_alloc_array_resolved16##suffix##_instrumented; \
- qpoints->pAllocArrayResolved32 = art_quick_alloc_array_resolved32##suffix##_instrumented; \
- qpoints->pAllocArrayResolved64 = art_quick_alloc_array_resolved64##suffix##_instrumented; \
- qpoints->pAllocObjectResolved = art_quick_alloc_object_resolved##suffix##_instrumented; \
- qpoints->pAllocObjectInitialized = art_quick_alloc_object_initialized##suffix##_instrumented; \
- qpoints->pAllocObjectWithChecks = art_quick_alloc_object_with_checks##suffix##_instrumented; \
- qpoints->pAllocStringObject = art_quick_alloc_string_object##suffix##_instrumented; \
- qpoints->pAllocStringFromBytes = art_quick_alloc_string_from_bytes##suffix##_instrumented; \
- qpoints->pAllocStringFromChars = art_quick_alloc_string_from_chars##suffix##_instrumented; \
- qpoints->pAllocStringFromString = art_quick_alloc_string_from_string##suffix##_instrumented; \
+ qpoints->SetAllocArrayResolved(art_quick_alloc_array_resolved##suffix##_instrumented); \
+ qpoints->SetAllocArrayResolved8(art_quick_alloc_array_resolved8##suffix##_instrumented); \
+ qpoints->SetAllocArrayResolved16(art_quick_alloc_array_resolved16##suffix##_instrumented); \
+ qpoints->SetAllocArrayResolved32(art_quick_alloc_array_resolved32##suffix##_instrumented); \
+ qpoints->SetAllocArrayResolved64(art_quick_alloc_array_resolved64##suffix##_instrumented); \
+ qpoints->SetAllocObjectResolved(art_quick_alloc_object_resolved##suffix##_instrumented); \
+ qpoints->SetAllocObjectInitialized(art_quick_alloc_object_initialized##suffix##_instrumented); \
+ qpoints->SetAllocObjectWithChecks(art_quick_alloc_object_with_checks##suffix##_instrumented); \
+ qpoints->SetAllocStringObject(art_quick_alloc_string_object##suffix##_instrumented); \
+ qpoints->SetAllocStringFromBytes(art_quick_alloc_string_from_bytes##suffix##_instrumented); \
+ qpoints->SetAllocStringFromChars(art_quick_alloc_string_from_chars##suffix##_instrumented); \
+ qpoints->SetAllocStringFromString(art_quick_alloc_string_from_string##suffix##_instrumented); \
} else { \
- qpoints->pAllocArrayResolved = art_quick_alloc_array_resolved##suffix; \
- qpoints->pAllocArrayResolved8 = art_quick_alloc_array_resolved8##suffix; \
- qpoints->pAllocArrayResolved16 = art_quick_alloc_array_resolved16##suffix; \
- qpoints->pAllocArrayResolved32 = art_quick_alloc_array_resolved32##suffix; \
- qpoints->pAllocArrayResolved64 = art_quick_alloc_array_resolved64##suffix; \
- qpoints->pAllocObjectResolved = art_quick_alloc_object_resolved##suffix; \
- qpoints->pAllocObjectInitialized = art_quick_alloc_object_initialized##suffix; \
- qpoints->pAllocObjectWithChecks = art_quick_alloc_object_with_checks##suffix; \
- qpoints->pAllocStringObject = art_quick_alloc_string_object##suffix; \
- qpoints->pAllocStringFromBytes = art_quick_alloc_string_from_bytes##suffix; \
- qpoints->pAllocStringFromChars = art_quick_alloc_string_from_chars##suffix; \
- qpoints->pAllocStringFromString = art_quick_alloc_string_from_string##suffix; \
+ qpoints->SetAllocArrayResolved(art_quick_alloc_array_resolved##suffix); \
+ qpoints->SetAllocArrayResolved8(art_quick_alloc_array_resolved8##suffix); \
+ qpoints->SetAllocArrayResolved16(art_quick_alloc_array_resolved16##suffix); \
+ qpoints->SetAllocArrayResolved32(art_quick_alloc_array_resolved32##suffix); \
+ qpoints->SetAllocArrayResolved64(art_quick_alloc_array_resolved64##suffix); \
+ qpoints->SetAllocObjectResolved(art_quick_alloc_object_resolved##suffix); \
+ qpoints->SetAllocObjectInitialized(art_quick_alloc_object_initialized##suffix); \
+ qpoints->SetAllocObjectWithChecks(art_quick_alloc_object_with_checks##suffix); \
+ qpoints->SetAllocStringObject(art_quick_alloc_string_object##suffix); \
+ qpoints->SetAllocStringFromBytes(art_quick_alloc_string_from_bytes##suffix); \
+ qpoints->SetAllocStringFromChars(art_quick_alloc_string_from_chars##suffix); \
+ qpoints->SetAllocStringFromString(art_quick_alloc_string_from_string##suffix); \
} \
}
diff --git a/runtime/entrypoints/quick/quick_default_init_entrypoints.h b/runtime/entrypoints/quick/quick_default_init_entrypoints.h
index eec7ca9..d1ce38b 100644
--- a/runtime/entrypoints/quick/quick_default_init_entrypoints.h
+++ b/runtime/entrypoints/quick/quick_default_init_entrypoints.h
@@ -37,107 +37,107 @@
ResetQuickAllocEntryPoints(qpoints);
// Resolution and initialization
- qpoints->pInitializeStaticStorage = art_quick_initialize_static_storage;
- qpoints->pResolveTypeAndVerifyAccess = art_quick_resolve_type_and_verify_access;
- qpoints->pResolveType = art_quick_resolve_type;
- qpoints->pResolveMethodHandle = art_quick_resolve_method_handle;
- qpoints->pResolveMethodType = art_quick_resolve_method_type;
- qpoints->pResolveString = art_quick_resolve_string;
+ qpoints->SetInitializeStaticStorage(art_quick_initialize_static_storage);
+ qpoints->SetResolveTypeAndVerifyAccess(art_quick_resolve_type_and_verify_access);
+ qpoints->SetResolveType(art_quick_resolve_type);
+ qpoints->SetResolveMethodHandle(art_quick_resolve_method_handle);
+ qpoints->SetResolveMethodType(art_quick_resolve_method_type);
+ qpoints->SetResolveString(art_quick_resolve_string);
// Field
- qpoints->pSet8Instance = art_quick_set8_instance;
- qpoints->pSet8Static = art_quick_set8_static;
- qpoints->pSet16Instance = art_quick_set16_instance;
- qpoints->pSet16Static = art_quick_set16_static;
- qpoints->pSet32Instance = art_quick_set32_instance;
- qpoints->pSet32Static = art_quick_set32_static;
- qpoints->pSet64Instance = art_quick_set64_instance;
- qpoints->pSet64Static = art_quick_set64_static;
- qpoints->pSetObjInstance = art_quick_set_obj_instance;
- qpoints->pSetObjStatic = art_quick_set_obj_static;
- qpoints->pGetByteInstance = art_quick_get_byte_instance;
- qpoints->pGetBooleanInstance = art_quick_get_boolean_instance;
- qpoints->pGetShortInstance = art_quick_get_short_instance;
- qpoints->pGetCharInstance = art_quick_get_char_instance;
- qpoints->pGet32Instance = art_quick_get32_instance;
- qpoints->pGet64Instance = art_quick_get64_instance;
- qpoints->pGetObjInstance = art_quick_get_obj_instance;
- qpoints->pGetByteStatic = art_quick_get_byte_static;
- qpoints->pGetBooleanStatic = art_quick_get_boolean_static;
- qpoints->pGetShortStatic = art_quick_get_short_static;
- qpoints->pGetCharStatic = art_quick_get_char_static;
- qpoints->pGet32Static = art_quick_get32_static;
- qpoints->pGet64Static = art_quick_get64_static;
- qpoints->pGetObjStatic = art_quick_get_obj_static;
+ qpoints->SetSet8Instance(art_quick_set8_instance);
+ qpoints->SetSet8Static(art_quick_set8_static);
+ qpoints->SetSet16Instance(art_quick_set16_instance);
+ qpoints->SetSet16Static(art_quick_set16_static);
+ qpoints->SetSet32Instance(art_quick_set32_instance);
+ qpoints->SetSet32Static(art_quick_set32_static);
+ qpoints->SetSet64Instance(art_quick_set64_instance);
+ qpoints->SetSet64Static(art_quick_set64_static);
+ qpoints->SetSetObjInstance(art_quick_set_obj_instance);
+ qpoints->SetSetObjStatic(art_quick_set_obj_static);
+ qpoints->SetGetByteInstance(art_quick_get_byte_instance);
+ qpoints->SetGetBooleanInstance(art_quick_get_boolean_instance);
+ qpoints->SetGetShortInstance(art_quick_get_short_instance);
+ qpoints->SetGetCharInstance(art_quick_get_char_instance);
+ qpoints->SetGet32Instance(art_quick_get32_instance);
+ qpoints->SetGet64Instance(art_quick_get64_instance);
+ qpoints->SetGetObjInstance(art_quick_get_obj_instance);
+ qpoints->SetGetByteStatic(art_quick_get_byte_static);
+ qpoints->SetGetBooleanStatic(art_quick_get_boolean_static);
+ qpoints->SetGetShortStatic(art_quick_get_short_static);
+ qpoints->SetGetCharStatic(art_quick_get_char_static);
+ qpoints->SetGet32Static(art_quick_get32_static);
+ qpoints->SetGet64Static(art_quick_get64_static);
+ qpoints->SetGetObjStatic(art_quick_get_obj_static);
// Array
- qpoints->pAputObject = art_quick_aput_obj;
+ qpoints->SetAputObject(art_quick_aput_obj);
// JNI
- qpoints->pJniMethodStart = art_jni_method_start;
- qpoints->pJniMethodEnd = art_jni_method_end;
- qpoints->pQuickGenericJniTrampoline = art_quick_generic_jni_trampoline;
- qpoints->pJniDecodeReferenceResult = JniDecodeReferenceResult;
- qpoints->pJniReadBarrier = art_jni_read_barrier;
+ qpoints->SetJniMethodStart(art_jni_method_start);
+ qpoints->SetJniMethodEnd(art_jni_method_end);
+ qpoints->SetQuickGenericJniTrampoline(art_quick_generic_jni_trampoline);
+ qpoints->SetJniDecodeReferenceResult(JniDecodeReferenceResult);
+ qpoints->SetJniReadBarrier(art_jni_read_barrier);
// Locks
if (UNLIKELY(VLOG_IS_ON(systrace_lock_logging))) {
- qpoints->pJniLockObject = art_jni_lock_object_no_inline;
- qpoints->pJniUnlockObject = art_jni_unlock_object_no_inline;
- qpoints->pLockObject = art_quick_lock_object_no_inline;
- qpoints->pUnlockObject = art_quick_unlock_object_no_inline;
+ qpoints->SetJniLockObject(art_jni_lock_object_no_inline);
+ qpoints->SetJniUnlockObject(art_jni_unlock_object_no_inline);
+ qpoints->SetLockObject(art_quick_lock_object_no_inline);
+ qpoints->SetUnlockObject(art_quick_unlock_object_no_inline);
} else {
- qpoints->pJniLockObject = art_jni_lock_object;
- qpoints->pJniUnlockObject = art_jni_unlock_object;
- qpoints->pLockObject = art_quick_lock_object;
- qpoints->pUnlockObject = art_quick_unlock_object;
+ qpoints->SetJniLockObject(art_jni_lock_object);
+ qpoints->SetJniUnlockObject(art_jni_unlock_object);
+ qpoints->SetLockObject(art_quick_lock_object);
+ qpoints->SetUnlockObject(art_quick_unlock_object);
}
// Invocation
- qpoints->pQuickImtConflictTrampoline = art_quick_imt_conflict_trampoline;
- qpoints->pQuickResolutionTrampoline = art_quick_resolution_trampoline;
- qpoints->pQuickToInterpreterBridge = art_quick_to_interpreter_bridge;
- qpoints->pInvokeDirectTrampolineWithAccessCheck =
- art_quick_invoke_direct_trampoline_with_access_check;
- qpoints->pInvokeInterfaceTrampolineWithAccessCheck =
- art_quick_invoke_interface_trampoline_with_access_check;
- qpoints->pInvokeStaticTrampolineWithAccessCheck =
- art_quick_invoke_static_trampoline_with_access_check;
- qpoints->pInvokeSuperTrampolineWithAccessCheck =
- art_quick_invoke_super_trampoline_with_access_check;
- qpoints->pInvokeVirtualTrampolineWithAccessCheck =
- art_quick_invoke_virtual_trampoline_with_access_check;
- qpoints->pInvokePolymorphic = art_quick_invoke_polymorphic;
- qpoints->pInvokeCustom = art_quick_invoke_custom;
+ qpoints->SetQuickImtConflictTrampoline(art_quick_imt_conflict_trampoline);
+ qpoints->SetQuickResolutionTrampoline(art_quick_resolution_trampoline);
+ qpoints->SetQuickToInterpreterBridge(art_quick_to_interpreter_bridge);
+ qpoints->SetInvokeDirectTrampolineWithAccessCheck(
+ art_quick_invoke_direct_trampoline_with_access_check);
+ qpoints->SetInvokeInterfaceTrampolineWithAccessCheck(
+ art_quick_invoke_interface_trampoline_with_access_check);
+ qpoints->SetInvokeStaticTrampolineWithAccessCheck(
+ art_quick_invoke_static_trampoline_with_access_check);
+ qpoints->SetInvokeSuperTrampolineWithAccessCheck(
+ art_quick_invoke_super_trampoline_with_access_check);
+ qpoints->SetInvokeVirtualTrampolineWithAccessCheck(
+ art_quick_invoke_virtual_trampoline_with_access_check);
+ qpoints->SetInvokePolymorphic(art_quick_invoke_polymorphic);
+ qpoints->SetInvokeCustom(art_quick_invoke_custom);
// Thread
- qpoints->pTestSuspend = art_quick_test_suspend;
+ qpoints->SetTestSuspend(art_quick_test_suspend);
// Throws
- qpoints->pDeliverException = art_quick_deliver_exception;
- qpoints->pThrowArrayBounds = art_quick_throw_array_bounds;
- qpoints->pThrowDivZero = art_quick_throw_div_zero;
- qpoints->pThrowNullPointer = art_quick_throw_null_pointer_exception;
- qpoints->pThrowStackOverflow = art_quick_throw_stack_overflow;
- qpoints->pThrowStringBounds = art_quick_throw_string_bounds;
+ qpoints->SetDeliverException(art_quick_deliver_exception);
+ qpoints->SetThrowArrayBounds(art_quick_throw_array_bounds);
+ qpoints->SetThrowDivZero(art_quick_throw_div_zero);
+ qpoints->SetThrowNullPointer(art_quick_throw_null_pointer_exception);
+ qpoints->SetThrowStackOverflow(art_quick_throw_stack_overflow);
+ qpoints->SetThrowStringBounds(art_quick_throw_string_bounds);
// Deoptimize
- qpoints->pDeoptimize = art_quick_deoptimize_from_compiled_code;
+ qpoints->SetDeoptimize(art_quick_deoptimize_from_compiled_code);
// StringBuilder append
- qpoints->pStringBuilderAppend = art_quick_string_builder_append;
+ qpoints->SetStringBuilderAppend(art_quick_string_builder_append);
// Tiered JIT support
- qpoints->pUpdateInlineCache = art_quick_update_inline_cache;
- qpoints->pCompileOptimized = art_quick_compile_optimized;
+ qpoints->SetUpdateInlineCache(art_quick_update_inline_cache);
+ qpoints->SetCompileOptimized(art_quick_compile_optimized);
// Tracing hooks
- qpoints->pMethodEntryHook = art_quick_method_entry_hook;
- qpoints->pMethodExitHook = art_quick_method_exit_hook;
+ qpoints->SetMethodEntryHook(art_quick_method_entry_hook);
+ qpoints->SetMethodExitHook(art_quick_method_exit_hook);
if (monitor_jni_entry_exit) {
- qpoints->pJniMethodStart = art_jni_monitored_method_start;
- qpoints->pJniMethodEnd = art_jni_monitored_method_end;
+ qpoints->SetJniMethodStart(art_jni_monitored_method_start);
+ qpoints->SetJniMethodEnd(art_jni_monitored_method_end);
}
}
diff --git a/runtime/entrypoints/quick/quick_entrypoints.h b/runtime/entrypoints/quick/quick_entrypoints.h
index 26e5403..7af1a0b 100644
--- a/runtime/entrypoints/quick/quick_entrypoints.h
+++ b/runtime/entrypoints/quick/quick_entrypoints.h
@@ -44,7 +44,9 @@
// Pointers to functions that are called by quick compiler generated code via thread-local storage.
struct QuickEntryPoints {
-#define ENTRYPOINT_ENUM(name, rettype, ...) rettype ( * p ## name )( __VA_ARGS__ );
+#define ENTRYPOINT_ENUM(name, rettype, ...) \
+ void* p##name; \
+ void Set##name(rettype (*fn)(__VA_ARGS__)) { p##name = reinterpret_cast<void*>(fn); }
#include "quick_entrypoints_list.h"
QUICK_ENTRYPOINT_LIST(ENTRYPOINT_ENUM)
#undef QUICK_ENTRYPOINT_LIST
diff --git a/runtime/well_known_classes.cc b/runtime/well_known_classes.cc
index 62e405a..4705741 100644
--- a/runtime/well_known_classes.cc
+++ b/runtime/well_known_classes.cc
@@ -299,7 +299,7 @@
#define SET_ENTRY_POINT(init_runtime_name, init_signature, new_runtime_name, \
new_java_name, new_signature, entry_point_name) \
DCHECK(!Runtime::Current()->IsStarted() || (new_runtime_name) != nullptr); \
- qpoints->p ## entry_point_name = reinterpret_cast<void(*)()>(new_runtime_name);
+ qpoints->p ## entry_point_name = reinterpret_cast<void*>(new_runtime_name);
STRING_INIT_LIST(SET_ENTRY_POINT)
#undef SET_ENTRY_POINT
}