6 #include "src/snapshot/snapshot-source-sink.h" 8 #include "src/base/logging.h" 9 #include "src/handles-inl.h" 10 #include "src/objects-inl.h" 15 void SnapshotByteSink::PutInt(
uintptr_t integer,
const char* description) {
16 DCHECK_LT(integer, 1 << 30);
19 if (integer > 0xFF) bytes = 2;
20 if (integer > 0xFFFF) bytes = 3;
21 if (integer > 0xFFFFFF) bytes = 4;
22 integer |= (bytes - 1);
23 Put(static_cast<int>(integer & 0xFF),
"IntPart1");
24 if (bytes > 1) Put(static_cast<int>((integer >> 8) & 0xFF),
"IntPart2");
25 if (bytes > 2) Put(static_cast<int>((integer >> 16) & 0xFF),
"IntPart3");
26 if (bytes > 3) Put(static_cast<int>((integer >> 24) & 0xFF),
"IntPart4");
30 void SnapshotByteSink::PutRaw(
const byte* data,
int number_of_bytes,
31 const char* description) {
32 data_.insert(data_.end(), data, data + number_of_bytes);
35 void SnapshotByteSink::Append(
const SnapshotByteSink& other) {
36 data_.insert(data_.end(), other.data_.begin(), other.data_.end());
39 int SnapshotByteSource::GetBlob(
const byte** data) {
41 CHECK(position_ + size <= length_);
42 *data = &data_[position_];