@@ -1227,11 +1227,13 @@ CompactObj::ExternalRep CompactObj::GetExternalRep() const {
12271227 return static_cast <CompactObj::ExternalRep>(u_.ext_ptr .representation );
12281228}
12291229
1230- void CompactObj::SetCool (size_t offset, uint32_t sz, detail::TieredColdRecord* record) {
1230+ void CompactObj::SetCool (size_t offset, uint32_t sz, ExternalRep rep,
1231+ detail::TieredColdRecord* record) {
12311232 // We copy the mask of the "cooled" referenced object because it contains the encoding info.
12321233 SetMeta (EXTERNAL_TAG, record->value .mask_ );
12331234
12341235 u_.ext_ptr .is_cool = 1 ;
1236+ u_.ext_ptr .representation = static_cast <uint8_t >(rep);
12351237 u_.ext_ptr .page_offset = offset % 4096 ;
12361238 u_.ext_ptr .serialized_size = sz;
12371239 u_.ext_ptr .cool_record = record;
@@ -1247,6 +1249,10 @@ auto CompactObj::GetCool() const -> CoolItem {
12471249 return res;
12481250}
12491251
1252+ void CompactObj::Freeze (size_t offset, size_t sz) {
1253+ SetExternal (offset, sz, GetExternalRep ());
1254+ }
1255+
12501256std::pair<size_t , size_t > CompactObj::GetExternalSlice () const {
12511257 DCHECK_EQ (EXTERNAL_TAG, taglen_);
12521258 auto & ext = u_.ext_ptr ;
@@ -1618,7 +1624,7 @@ StringOrView CompactObj::GetRawString() const {
16181624 return StringOrView::FromString (std::move (tmp));
16191625 }
16201626
1621- LOG (FATAL) << " Unsupported tag for GetRawString(): " << taglen_;
1627+ LOG (FATAL) << " Unsupported tag for GetRawString(): " << int ( taglen_) ;
16221628 return {};
16231629}
16241630
0 commit comments