From 1bebd7aa1d87abaacfd64b675d6bcfb98e438968 Mon Sep 17 00:00:00 2001 From: Alexander Markov Date: Thu, 8 Feb 2018 20:47:41 +0000 Subject: [PATCH] [VM] Support inlining of _TypedList._setInt64 on x64 Issue: https://github.com/dart-lang/sdk/issues/32080 Change-Id: I692d1873acc4c9816ccc6929f51e0ed699f585da Reviewed-on: https://dart-review.googlesource.com/40103 Reviewed-by: Vyacheslav Egorov Commit-Queue: Alexander Markov --- runtime/vm/compiler/backend/inliner.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/runtime/vm/compiler/backend/inliner.cc b/runtime/vm/compiler/backend/inliner.cc index 74b9b459fd3..b8887218016 100644 --- a/runtime/vm/compiler/backend/inliner.cc +++ b/runtime/vm/compiler/backend/inliner.cc @@ -2768,6 +2768,10 @@ static bool InlineByteArrayBaseStore(FlowGraph* flow_graph, value_check = Cids::CreateMonomorphic(Z, kFloat32x4Cid); break; } + case kTypedDataInt64ArrayCid: + // StoreIndexedInstr takes unboxed int64, so value + // is checked when unboxing. + break; default: // Array cids are already checked in the caller. UNREACHABLE(); @@ -3339,6 +3343,13 @@ bool FlowGraphInliner::TryInlineRecognizedMethod( return InlineByteArrayBaseStore(flow_graph, target, call, receiver, receiver_cid, kTypedDataUint32ArrayCid, entry, last); + case MethodRecognizer::kByteArrayBaseSetInt64: + if (!ShouldInlineInt64ArrayOps()) { + return false; + } + return InlineByteArrayBaseStore(flow_graph, target, call, receiver, + receiver_cid, kTypedDataInt64ArrayCid, + entry, last); case MethodRecognizer::kByteArrayBaseSetFloat32: if (!CanUnboxDouble()) { return false;