120 std::unique_ptr<SourcePositionTable> line_table;
121 std::unordered_map<int, std::vector<CodeEntryAndLineNumber>> inline_stacks;
122 std::unordered_set<CodeEntry*, CodeEntry::Hasher, CodeEntry::Equals>
123 cached_inline_entries;
124 bool is_shared_cross_origin =
false;
125 if (IsScript(shared->script(cage_base), cage_base)) {
130 is_shared_cross_origin = script->origin_options().IsSharedCrossOrigin();
132 bool is_baseline = abstract_code->kind(cage_base) == CodeKind::BASELINE;
135 std::unique_ptr<baseline::BytecodeOffsetIterator> baseline_iterator;
140 abstract_code->GetCode()->bytecode_offset_table(),
isolate_);
141 baseline_iterator = std::make_unique<baseline::BytecodeOffsetIterator>(
142 bytecode_offsets, bytecodes);
151 int position = it.source_position().ScriptOffset();
152 int inlining_id = it.source_position().InliningId();
153 int code_offset = it.code_offset();
156 baseline_iterator->AdvanceToBytecodeOffset(code_offset);
158 static_cast<int>(baseline_iterator->current_pc_start_offset());
162 int line_number = script->GetLineNumber(
position) + 1;
163 line_table->SetPosition(code_offset, line_number, inlining_id);
166 DCHECK(IsCode(*abstract_code, cage_base));
167 std::vector<SourcePositionInfo> stack =
168 it.source_position().InliningStack(
isolate_,
169 abstract_code->GetCode());
175 int line_number = stack.front().line + 1;
176 line_table->SetPosition(code_offset, line_number, inlining_id);
178 std::vector<CodeEntryAndLineNumber> inline_stack;
181 if (pos_info.script.is_null())
continue;
184 pos_info.script->GetLineNumber(pos_info.position.ScriptOffset()) +
187 const char* resource_name =
188 (IsName(pos_info.script->name()))
192 bool inline_is_shared_cross_origin =
193 pos_info.script->origin_options().IsSharedCrossOrigin();
204 start_pos_info.
line + 1, start_pos_info.
column + 1,
nullptr,
205 inline_is_shared_cross_origin);
210 CodeEntry* cached_entry = GetOrInsertCachedEntry(
213 inline_stack.push_back({cached_entry, line_number});
215 DCHECK(!inline_stack.empty());
216 inline_stacks.emplace(inlining_id, std::move(inline_stack));
223 std::move(line_table), is_shared_cross_origin);
224 if (!inline_stacks.empty()) {
226 std::move(inline_stacks));
static CodeEntry * Create(Args &&... args)
void FillFunctionInfo(Tagged< SharedFunctionInfo > shared)
void set_script_id(int script_id)
void SetInlineStacks(std::unordered_set< CodeEntry *, Hasher, Equals > inline_entries, std::unordered_map< int, std::vector< CodeEntryAndLineNumber > > inline_stacks)
void set_position(int position)
static V8_EXPORT_PRIVATE const char *const kEmptyResourceName