summaryrefslogtreecommitdiff
path: root/compiler/optimizing/intrinsics_x86_64.cc
diff options
context:
space:
mode:
author Almaz Mingaleev <mingaleev@google.com> 2024-09-20 11:13:12 +0000
committer Almaz Mingaleev <mingaleev@google.com> 2024-09-20 14:16:25 +0000
commit6b7fc69a6a5ffcfa16b7511f6a04635c105543db (patch)
tree190396b34f9e41fd2ed1e601bf8c1ad58ce64c60 /compiler/optimizing/intrinsics_x86_64.cc
parent68742f619ed4475de413ced479aa2517bf3fd93a (diff)
Check receiver for null in invokeExact intrinsic.
Bug: 297147201 Test: ./art/test/testrunner/testrunner.py --host --64 --optimizing --jvm -b Change-Id: I6633bdab20b13335afccfe0506f6b91391c19fe3
Diffstat (limited to 'compiler/optimizing/intrinsics_x86_64.cc')
-rw-r--r--compiler/optimizing/intrinsics_x86_64.cc3
1 files changed, 3 insertions, 0 deletions
diff --git a/compiler/optimizing/intrinsics_x86_64.cc b/compiler/optimizing/intrinsics_x86_64.cc
index d085d2c469..bd6d6d1889 100644
--- a/compiler/optimizing/intrinsics_x86_64.cc
+++ b/compiler/optimizing/intrinsics_x86_64.cc
@@ -4162,6 +4162,9 @@ void IntrinsicCodeGeneratorX86_64::VisitMethodHandleInvokeExact(HInvoke* invoke)
CpuRegister receiver = locations->InAt(1).AsRegister<CpuRegister>();
+ __ testl(receiver, receiver);
+ __ j(kEqual, slow_path->GetEntryLabel());
+
// Using vtable_index register as temporary in subtype check. It will be overridden later.
// If `method` is an interface method this check will fail.
CpuRegister vtable_index = locations->GetTemp(0).AsRegister<CpuRegister>();