// Read barrier entrypoints. // art_quick_read_barrier_mark_regX uses an non-standard calling // convention: it expects its input in register X and returns its // result in that same register, and saves and restores all // caller-save registers. extern"C" mirror::Object* art_quick_read_barrier_mark_reg00(mirror::Object*); extern"C" mirror::Object* art_quick_read_barrier_mark_reg01(mirror::Object*); extern"C" mirror::Object* art_quick_read_barrier_mark_reg02(mirror::Object*); extern"C" mirror::Object* art_quick_read_barrier_mark_reg03(mirror::Object*); extern"C" mirror::Object* art_quick_read_barrier_mark_reg05(mirror::Object*); extern"C" mirror::Object* art_quick_read_barrier_mark_reg06(mirror::Object*); extern"C" mirror::Object* art_quick_read_barrier_mark_reg07(mirror::Object*); extern"C" mirror::Object* art_quick_read_barrier_slow(mirror::Object*, mirror::Object*, uint32_t); extern"C" mirror::Object* art_quick_read_barrier_for_root_slow(GcRoot<mirror::Object>*);
// Math
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->SetStringCompareTo(art_quick_string_compareto);
qpoints->SetMemcpy(art_quick_memcpy);
// Read barrier.
UpdateReadBarrierEntrypoints(qpoints, /*is_active=*/ false);
qpoints->SetReadBarrierMarkReg04(nullptr); // Cannot use register 4 (ESP) to pass arguments. // x86 has only 8 core registers.
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);
}
void UpdateLowOverheadTraceEntrypoints([[maybe_unused]] QuickEntryPoints* qpoints,
[[maybe_unused]] LowOverheadTraceType trace_type) { // This is a nop on this architecture. Low overhead tracing is only implemented for ARM64.
}
uintptr_t GetNopUprobeMethodEntryHookAddress() { // This is invalid on this architecture. Uprobe support is only implemented for ARM64. returnreinterpret_cast<uintptr_t>(nullptr);
}
} // namespace art
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.8 Sekunden
(vorverarbeitet am 2026-06-29)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.