summaryrefslogtreecommitdiff
path: root/runtime/thread.h
diff options
context:
space:
mode:
author Nicolas Geoffray <ngeoffray@google.com> 2019-12-03 14:36:42 +0000
committer Nicolas Geoffray <ngeoffray@google.com> 2019-12-04 12:04:36 +0000
commita00b54b74bee06c006b8bebfbef85e2801de293c (patch)
tree6edb2a96c1f89ae913e6b5f190b117cb290239e8 /runtime/thread.h
parente571a283b73fb4621c401811f523503b3266564b (diff)
Helpers and refactorings to prepare for interpreter optimizations (x64)
- Add data structure offsets that will be used in assembly code. - Be explicit about a stack overflow in a fault handler. - Move assembly helper code in asm_support so interpreter can use it. - Support putting literals in InterpreterCache. - Fix artHandleFillArrayDataFromCode for x64. Bug: 119800099 Test: test.py Change-Id: I2729f87fe5d09c04ae2e7081636f0cd89ac14c21
Diffstat (limited to 'runtime/thread.h')
-rw-r--r--runtime/thread.h17
1 files changed, 9 insertions, 8 deletions
diff --git a/runtime/thread.h b/runtime/thread.h
index 29375e51f4..d6faa95824 100644
--- a/runtime/thread.h
+++ b/runtime/thread.h
@@ -718,7 +718,14 @@ class Thread {
}
public:
- static uint32_t QuickEntryPointOffsetWithSize(size_t quick_entrypoint_offset,
+ template<PointerSize pointer_size>
+ static constexpr ThreadOffset<pointer_size> QuickEntryPointOffset(
+ size_t quick_entrypoint_offset) {
+ return ThreadOffsetFromTlsPtr<pointer_size>(
+ OFFSETOF_MEMBER(tls_ptr_sized_values, quick_entrypoints) + quick_entrypoint_offset);
+ }
+
+ static constexpr uint32_t QuickEntryPointOffsetWithSize(size_t quick_entrypoint_offset,
PointerSize pointer_size) {
if (pointer_size == PointerSize::k32) {
return QuickEntryPointOffset<PointerSize::k32>(quick_entrypoint_offset).
@@ -730,12 +737,6 @@ class Thread {
}
template<PointerSize pointer_size>
- static ThreadOffset<pointer_size> QuickEntryPointOffset(size_t quick_entrypoint_offset) {
- return ThreadOffsetFromTlsPtr<pointer_size>(
- OFFSETOF_MEMBER(tls_ptr_sized_values, quick_entrypoints) + quick_entrypoint_offset);
- }
-
- template<PointerSize pointer_size>
static ThreadOffset<pointer_size> JniEntryPointOffset(size_t jni_entrypoint_offset) {
return ThreadOffsetFromTlsPtr<pointer_size>(
OFFSETOF_MEMBER(tls_ptr_sized_values, jni_entrypoints) + jni_entrypoint_offset);
@@ -743,7 +744,7 @@ class Thread {
// Return the entry point offset integer value for ReadBarrierMarkRegX, where X is `reg`.
template <PointerSize pointer_size>
- static int32_t ReadBarrierMarkEntryPointsOffset(size_t reg) {
+ static constexpr int32_t ReadBarrierMarkEntryPointsOffset(size_t reg) {
// The entry point list defines 30 ReadBarrierMarkRegX entry points.
DCHECK_LT(reg, 30u);
// The ReadBarrierMarkRegX entry points are ordered by increasing