[vm] Fix range checks in CheckOffsets.
Adjust the checks for runtime API ranges in CheckOffsets to account for
ranges where the first index is not 0-valued when cast to an intptr_t.
TEST=ci
Change-Id: I5478f6bf44b41f0ce7d4689e0ae37cd825838a40
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/444020
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Tess Strickland <sstrickl@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Auto-Submit: Tess Strickland <sstrickl@google.com>
diff --git a/runtime/vm/dart.cc b/runtime/vm/dart.cc
index ba56a76..51857ec3 100644
--- a/runtime/vm/dart.cc
+++ b/runtime/vm/dart.cc
@@ -232,7 +232,7 @@
i <= static_cast<intptr_t>(Last); i++) { \
if (Filter(static_cast<Type>(i))) { \
CHECK_OFFSET(Class::Getter(static_cast<Type>(i)), \
- AOT_##Class##_##Getter[i]); \
+ AOT_##Class##_##Getter[i - static_cast<intptr_t>(First)]); \
} \
}
#define CHECK_CONSTANT(Class, Name) \
@@ -257,7 +257,8 @@
for (intptr_t i = static_cast<intptr_t>(First); \
i <= static_cast<intptr_t>(Last); i++) { \
if (Filter(static_cast<Type>(i))) { \
- CHECK_OFFSET(Class::Getter(static_cast<Type>(i)), Class##_##Getter[i]); \
+ CHECK_OFFSET(Class::Getter(static_cast<Type>(i)), \
+ Class##_##Getter[i - static_cast<intptr_t>(First)]); \
} \
}
#define CHECK_CONSTANT(Class, Name) CHECK_OFFSET(Class::Name, Class##_##Name);