-
Jakob Gruber authored
This is a reland of c5379162 The reland fixes Code::clear_padding to correctly clear trailing padding. Original change's description: > [code] Move the unwinding info into metadata area > > Semantically, the unwinding info is a variable-size metadata table > with untagged (i.e. no relocation needed) contents, packed inside Code > objects. This is just like other metadata tables (safepoint table, > handler table, constant pool, code comments); but for historical > reasons it's been treated differently so far. Unlike these other > tables, the unwinding info was located *after* InstructionEnd, and its > size was written to the first 8 bytes after InstructionEnd. > > This CL makes unwinding info handling more consistent with other > metadata tables by writing its offset into a dedicated > kUnwindingInfoOffsetOffset header slot, and by moving the actual data > inside the [InstructionStart,InstructionEnd[ area. In follow-up CLs, > this area will be split into dedicated instruction- and metadata > areas. > > A picture is worth 1000 words, before: > > +--------------------------+ <-- raw_instruction_start() > | instructions | > | ... | > +--------------------------+ > | embedded metadata | <-- safepoint_table_offset() > | ... | <-- handler_table_offset() > | | <-- constant_pool_offset() > | | <-- code_comments_offset() > | padding to the next | > | 8-byte aligned address | > +--------------------------+ <-- raw_instruction_end() > | [unwinding_info_size] | > | as uint64_t | > +--------------------------+ <-- unwinding_info_start() > | unwinding info | > | ... | > +--------------------------+ <-- unwinding_info_end() > > After: > > +--------------------------+ <-- raw_instruction_start() > | instructions | > | ... | > +--------------------------+ > | embedded metadata | <-- safepoint_table_offset() > | ... | <-- handler_table_offset() > | | <-- constant_pool_offset() > | | <-- code_comments_offset() > | | <-- unwinding_info_offset() > | | > +--------------------------+ <-- raw_instruction_end() > > Bug: v8:11036 > Change-Id: I649708821acc5365186ca2c9cff2669fc3e91fd3 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2484795 > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Cr-Commit-Position: refs/heads/master@{#70640} Cq-Include-Trybots: luci.v8.try:v8_linux64_msan_rel_ng Tbr: leszeks@chromium.org Bug: v8:11036 Change-Id: I2ea056fe2a53217e0b5ae25661b92f5ddec6fca5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2485501 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#70645}
82f6863a