mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 10:33:28 +00:00
[vm] Handle entry point object pool entries only in AOT
Avoid touching stubs in JIT mode when reading object pool as stubs may not be initialized yet. This may happen if using a core-jit snapshot. TEST=ci Change-Id: I598ef2ca4b6b22fb1bb560ad25b6ada9939799a0 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/216924 Reviewed-by: Ryan Macnak <rmacnak@google.com> Commit-Queue: Alexander Markov <alexmarkov@google.com>
This commit is contained in:
parent
ff26406d72
commit
bb06e649f4
|
@ -2381,6 +2381,7 @@ class ObjectPoolDeserializationCluster : public DeserializationCluster {
|
|||
void ReadFill(Deserializer* d, bool primary) {
|
||||
ASSERT(!is_canonical()); // Never canonical.
|
||||
fill_position_ = d->position();
|
||||
#if defined(DART_PRECOMPILED_RUNTIME)
|
||||
const uint8_t immediate_bits =
|
||||
ObjectPool::EncodeBits(ObjectPool::EntryType::kImmediate,
|
||||
ObjectPool::Patchability::kPatchable);
|
||||
|
@ -2392,6 +2393,7 @@ class ObjectPoolDeserializationCluster : public DeserializationCluster {
|
|||
megamorphic_call_entry_point =
|
||||
StubCode::MegamorphicCall().MonomorphicEntryPoint();
|
||||
}
|
||||
#endif // defined(DART_PRECOMPILED_RUNTIME)
|
||||
|
||||
for (intptr_t id = start_index_; id < stop_index_; id++) {
|
||||
const intptr_t length = d->ReadUnsigned();
|
||||
|
@ -2416,6 +2418,7 @@ class ObjectPoolDeserializationCluster : public DeserializationCluster {
|
|||
entry.raw_value_ = static_cast<intptr_t>(new_entry);
|
||||
break;
|
||||
}
|
||||
#if defined(DART_PRECOMPILED_RUNTIME)
|
||||
case ObjectPool::EntryType::kSwitchableCallMissEntryPoint:
|
||||
ASSERT(FLAG_use_bare_instructions);
|
||||
pool->untag()->entry_bits()[j] = immediate_bits;
|
||||
|
@ -2428,6 +2431,7 @@ class ObjectPoolDeserializationCluster : public DeserializationCluster {
|
|||
entry.raw_value_ =
|
||||
static_cast<intptr_t>(megamorphic_call_entry_point);
|
||||
break;
|
||||
#endif // defined(DART_PRECOMPILED_RUNTIME)
|
||||
default:
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue