[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 <vegorov@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
This commit is contained in:
Alexander Markov 2018-02-08 20:47:41 +00:00 committed by commit-bot@chromium.org
parent 56d59dd967
commit 1bebd7aa1d

View file

@ -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;