Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 2a99af9

Browse files
rmacnak-googlecommit-bot@chromium.org
authored andcommitted
[vm] Avoid a copy when deserializing typed data to Dart_CObject.
Address regressions in the FileIO_write_* benchmarks. TEST=ci Change-Id: I87e9ddffc92b7cbd82a5d37477e649bdca03818f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/208483 Reviewed-by: Siva Annamalai <asiva@google.com> Commit-Queue: Siva Annamalai <asiva@google.com>
1 parent 00cc25a commit 2a99af9

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

runtime/vm/message_snapshot.cc

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1636,10 +1636,9 @@ class TypedDataMessageDeserializationCluster
16361636
if (length == 0) {
16371637
data->value.as_typed_data.values = NULL;
16381638
} else {
1639-
const intptr_t length_in_bytes = length * element_size;
1640-
uint8_t* cdata = d->zone()->Alloc<uint8_t>(length_in_bytes);
1641-
data->value.as_typed_data.values = cdata;
1642-
d->ReadBytes(cdata, length_in_bytes);
1639+
data->value.as_typed_data.values =
1640+
const_cast<uint8_t*>(d->CurrentBufferAddress());
1641+
d->Advance(length * element_size);
16431642
}
16441643
d->AssignRef(data);
16451644
}

0 commit comments

Comments
 (0)