mirror of
https://github.com/dart-lang/sdk
synced 2024-09-19 21:01:50 +00:00
a5ff656da1
This reverts commit 80102c981b
.
Reason for revert: b/186359854
Original change's description:
> [vm] Switch datastream Write/WriteUnsigned to (S)LEB128.
>
> This reduces the number of variable-length integer encodings in our
> database from 2 to 1, and chooses the more standard one.
>
> TEST=Existing tests, in particular any that involve snapshots.
>
> Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-asan-linux-release-x64-try,vm-kernel-precomp-dwarf-linux-product-x64-try,vm-kernel-precomp-msan-linux-release-x64-try,vm-kernel-precomp-ubsan-linux-release-x64-try,vm-kernel-precomp-tsan-linux-release-x64-try,vm-kernel-precomp-nnbd-linux-debug-x64-try,vm-kernel-precomp-nnbd-linux-debug-simarm_x64-try,vm-kernel-precomp-linux-debug-simarm64c-try,vm-kernel-precomp-linux-debug-simarm_x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-debug-x64c-try,vm-kernel-precomp-linux-product-x64-try,vm-kernel-precomp-linux-release-x64-try
> Change-Id: Ia700158ac873ad32ac28c1027a669895961bc715
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196321
> Commit-Queue: Tess Strickland <sstrickl@google.com>
> Reviewed-by: Ryan Macnak <rmacnak@google.com>
> Reviewed-by: Martin Kustermann <kustermann@google.com>
# Not skipping CQ checks because original CL landed > 1 day ago.
Change-Id: Idf32bdd879cf8bb7407f6dae764312140ad6eeb2
Cq-Include-Trybots: luci.dart.try:vm-kernel-precomp-asan-linux-release-x64-try,vm-kernel-precomp-dwarf-linux-product-x64-try,vm-kernel-precomp-msan-linux-release-x64-try,vm-kernel-precomp-ubsan-linux-release-x64-try,vm-kernel-precomp-tsan-linux-release-x64-try,vm-kernel-precomp-nnbd-linux-debug-x64-try,vm-kernel-precomp-nnbd-linux-debug-simarm_x64-try,vm-kernel-precomp-linux-debug-simarm64c-try,vm-kernel-precomp-linux-debug-simarm_x64-try,vm-kernel-precomp-linux-debug-x64-try,vm-kernel-precomp-linux-debug-x64c-try,vm-kernel-precomp-linux-product-x64-try,vm-kernel-precomp-linux-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196920
Reviewed-by: Ivan Inozemtsev <iinozemtsev@google.com>
Commit-Queue: Ivan Inozemtsev <iinozemtsev@google.com>
61 lines
1.9 KiB
C++
61 lines
1.9 KiB
C++
// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
#include "vm/datastream.h"
|
|
|
|
#include "vm/compiler/runtime_api.h"
|
|
#include "vm/zone.h"
|
|
|
|
namespace dart {
|
|
|
|
void BaseWriteStream::WriteTargetWord(word value) {
|
|
ASSERT(compiler::target::kBitsPerWord == kBitsPerWord ||
|
|
Utils::IsAbsoluteUint(compiler::target::kBitsPerWord, value));
|
|
WriteFixed(static_cast<compiler::target::word>(value));
|
|
}
|
|
|
|
MallocWriteStream::~MallocWriteStream() {
|
|
free(buffer_);
|
|
}
|
|
|
|
void MallocWriteStream::Realloc(intptr_t new_size) {
|
|
const intptr_t old_offset = current_ - buffer_;
|
|
buffer_ = reinterpret_cast<uint8_t*>(realloc(buffer_, new_size));
|
|
capacity_ = buffer_ != nullptr ? new_size : 0;
|
|
current_ = buffer_ != nullptr ? buffer_ + old_offset : nullptr;
|
|
}
|
|
|
|
void ZoneWriteStream::Realloc(intptr_t new_size) {
|
|
const intptr_t old_offset = current_ - buffer_;
|
|
buffer_ = zone_->Realloc(buffer_, capacity_, new_size);
|
|
capacity_ = buffer_ != nullptr ? new_size : 0;
|
|
current_ = buffer_ != nullptr ? buffer_ + old_offset : nullptr;
|
|
}
|
|
|
|
StreamingWriteStream::~StreamingWriteStream() {
|
|
Flush();
|
|
free(buffer_);
|
|
}
|
|
|
|
void StreamingWriteStream::Realloc(intptr_t new_size) {
|
|
Flush();
|
|
// Check whether resetting the internal buffer by flushing gave enough space.
|
|
if (new_size <= capacity_) {
|
|
return;
|
|
}
|
|
const intptr_t new_capacity = Utils::RoundUp(new_size, 64 * KB);
|
|
buffer_ = reinterpret_cast<uint8_t*>(realloc(buffer_, new_capacity));
|
|
capacity_ = buffer_ != nullptr ? new_capacity : 0;
|
|
current_ = buffer_; // Flushing reset the internal buffer offset to 0.
|
|
}
|
|
|
|
void StreamingWriteStream::Flush() {
|
|
intptr_t size = current_ - buffer_;
|
|
callback_(callback_data_, buffer_, size);
|
|
flushed_size_ += size;
|
|
current_ = buffer_;
|
|
}
|
|
|
|
} // namespace dart
|