| Index: src/objects-inl.h | 
| diff --git a/src/objects-inl.h b/src/objects-inl.h | 
| index 931a7ef9315fdce114e86de05059d16ed920a3cb..784fc8d205bb93e3579a1fda1f52a0685cffc2f4 100644 | 
| --- a/src/objects-inl.h | 
| +++ b/src/objects-inl.h | 
| @@ -4887,6 +4887,16 @@ inline bool Code::is_interpreter_trampoline_builtin() { | 
| this == *builtins->InterpreterMarkBaselineOnReturn(); | 
| } | 
|  | 
| +inline bool Code::has_unwinding_info() const { | 
| +  return HasUnwindingInfoField::decode(READ_UINT32_FIELD(this, kFlagsOffset)); | 
| +} | 
| + | 
| +inline void Code::set_has_unwinding_info(bool state) { | 
| +  uint32_t previous = READ_UINT32_FIELD(this, kFlagsOffset); | 
| +  uint32_t updated_value = HasUnwindingInfoField::update(previous, state); | 
| +  WRITE_UINT32_FIELD(this, kFlagsOffset, updated_value); | 
| +} | 
| + | 
| inline void Code::set_is_crankshafted(bool value) { | 
| int previous = READ_UINT32_FIELD(this, kKindSpecificFlags2Offset); | 
| int updated = IsCrankshaftedField::update(previous, value); | 
| @@ -6409,7 +6419,6 @@ ACCESSORS(Code, deoptimization_data, FixedArray, kDeoptimizationDataOffset) | 
| ACCESSORS(Code, raw_type_feedback_info, Object, kTypeFeedbackInfoOffset) | 
| ACCESSORS(Code, next_code_link, Object, kNextCodeLinkOffset) | 
|  | 
| - | 
| void Code::WipeOutHeader() { | 
| WRITE_FIELD(this, kRelocationInfoOffset, NULL); | 
| WRITE_FIELD(this, kHandlerTableOffset, NULL); | 
| @@ -6463,9 +6472,38 @@ byte* Code::instruction_end()  { | 
| return instruction_start() + instruction_size(); | 
| } | 
|  | 
| +int Code::GetUnwindingInfoSizeOffset() const { | 
| +  DCHECK(has_unwinding_info()); | 
| +  return RoundUp(kHeaderSize + instruction_size(), kInt64Size); | 
| +} | 
| + | 
| +int Code::unwinding_info_size() const { | 
| +  DCHECK(has_unwinding_info()); | 
| +  return static_cast<int>( | 
| +      READ_UINT64_FIELD(this, GetUnwindingInfoSizeOffset())); | 
| +} | 
| + | 
| +void Code::set_unwinding_info_size(int value) { | 
| +  DCHECK(has_unwinding_info()); | 
| +  WRITE_UINT64_FIELD(this, GetUnwindingInfoSizeOffset(), value); | 
| +} | 
| + | 
| +byte* Code::unwinding_info_start() { | 
| +  DCHECK(has_unwinding_info()); | 
| +  return FIELD_ADDR(this, GetUnwindingInfoSizeOffset()) + kInt64Size; | 
| +} | 
| + | 
| +byte* Code::unwinding_info_end() { | 
| +  DCHECK(has_unwinding_info()); | 
| +  return unwinding_info_start() + unwinding_info_size(); | 
| +} | 
|  | 
| int Code::body_size() { | 
| -  return RoundUp(instruction_size(), kObjectAlignment); | 
| +  int unpadded_body_size = | 
| +      has_unwinding_info() | 
| +          ? static_cast<int>(unwinding_info_end() - instruction_start()) | 
| +          : instruction_size(); | 
| +  return RoundUp(unpadded_body_size, kObjectAlignment); | 
| } | 
|  | 
| int Code::SizeIncludingMetadata() { | 
|  |