@@ -26,7 +26,7 @@ void ProfilerListener::CallbackEvent(Name name, Address entry_point) {
2626 CodeEventsContainer evt_rec (CodeEventRecord::CODE_CREATION);
2727 CodeCreateEventRecord* rec = &evt_rec.CodeCreateEventRecord_ ;
2828 rec->instruction_start = entry_point;
29- rec->entry = NewCodeEntry (CodeEventListener::CALLBACK_TAG, GetName (name));
29+ rec->entry = new CodeEntry (CodeEventListener::CALLBACK_TAG, GetName (name));
3030 rec->instruction_size = 1 ;
3131 DispatchCodeEvent (evt_rec);
3232}
@@ -36,10 +36,10 @@ void ProfilerListener::CodeCreateEvent(CodeEventListener::LogEventsAndTags tag,
3636 CodeEventsContainer evt_rec (CodeEventRecord::CODE_CREATION);
3737 CodeCreateEventRecord* rec = &evt_rec.CodeCreateEventRecord_ ;
3838 rec->instruction_start = code->InstructionStart ();
39- rec->entry = NewCodeEntry (tag, GetName (name), CodeEntry::kEmptyResourceName ,
40- CpuProfileNode::kNoLineNumberInfo ,
41- CpuProfileNode::kNoColumnNumberInfo , nullptr ,
42- code->InstructionStart ());
39+ rec->entry = new CodeEntry (tag, GetName (name), CodeEntry::kEmptyResourceName ,
40+ CpuProfileNode::kNoLineNumberInfo ,
41+ CpuProfileNode::kNoColumnNumberInfo , nullptr ,
42+ code->InstructionStart ());
4343 rec->instruction_size = code->InstructionSize ();
4444 DispatchCodeEvent (evt_rec);
4545}
@@ -49,10 +49,10 @@ void ProfilerListener::CodeCreateEvent(CodeEventListener::LogEventsAndTags tag,
4949 CodeEventsContainer evt_rec (CodeEventRecord::CODE_CREATION);
5050 CodeCreateEventRecord* rec = &evt_rec.CodeCreateEventRecord_ ;
5151 rec->instruction_start = code->InstructionStart ();
52- rec->entry = NewCodeEntry (tag, GetName (name), CodeEntry::kEmptyResourceName ,
53- CpuProfileNode::kNoLineNumberInfo ,
54- CpuProfileNode::kNoColumnNumberInfo , nullptr ,
55- code->InstructionStart ());
52+ rec->entry = new CodeEntry (tag, GetName (name), CodeEntry::kEmptyResourceName ,
53+ CpuProfileNode::kNoLineNumberInfo ,
54+ CpuProfileNode::kNoColumnNumberInfo , nullptr ,
55+ code->InstructionStart ());
5656 rec->instruction_size = code->InstructionSize ();
5757 DispatchCodeEvent (evt_rec);
5858}
@@ -64,11 +64,11 @@ void ProfilerListener::CodeCreateEvent(CodeEventListener::LogEventsAndTags tag,
6464 CodeEventsContainer evt_rec (CodeEventRecord::CODE_CREATION);
6565 CodeCreateEventRecord* rec = &evt_rec.CodeCreateEventRecord_ ;
6666 rec->instruction_start = code->InstructionStart ();
67- rec->entry = NewCodeEntry (tag, GetName (shared->DebugName ()),
68- GetName (InferScriptName (script_name, shared)),
69- CpuProfileNode::kNoLineNumberInfo ,
70- CpuProfileNode::kNoColumnNumberInfo , nullptr ,
71- code->InstructionStart ());
67+ rec->entry = new CodeEntry (tag, GetName (shared->DebugName ()),
68+ GetName (InferScriptName (script_name, shared)),
69+ CpuProfileNode::kNoLineNumberInfo ,
70+ CpuProfileNode::kNoColumnNumberInfo , nullptr ,
71+ code->InstructionStart ());
7272 DCHECK (!code->IsCode ());
7373 rec->entry ->FillFunctionInfo (shared);
7474 rec->instruction_size = code->InstructionSize ();
@@ -102,11 +102,14 @@ void ProfilerListener::CodeCreateEvent(CodeEventListener::LogEventsAndTags tag,
102102 std::unordered_set<std::unique_ptr<CodeEntry>, CodeEntry::Hasher,
103103 CodeEntry::Equals>
104104 cached_inline_entries;
105+ bool is_shared_cross_origin = false ;
105106 if (shared->script ()->IsScript ()) {
106107 Script script = Script::cast (shared->script ());
107108 line_table.reset (new SourcePositionTable ());
108109 HandleScope scope (isolate_);
109110
111+ is_shared_cross_origin = script.origin_options ().IsSharedCrossOrigin ();
112+
110113 // Add each position to the source position table and store inlining stacks
111114 // for inline positions. We store almost the same information in the
112115 // profiler as is stored on the code object, except that we transform source
@@ -140,6 +143,9 @@ void ProfilerListener::CodeCreateEvent(CodeEventListener::LogEventsAndTags tag,
140143 ? GetName (Name::cast (pos_info.script ->name ()))
141144 : CodeEntry::kEmptyResourceName ;
142145
146+ bool inline_is_shared_cross_origin =
147+ pos_info.script ->origin_options ().IsSharedCrossOrigin ();
148+
143149 // We need the start line number and column number of the function for
144150 // kLeafNodeLineNumbers mode. Creating a SourcePositionInfo is a handy
145151 // way of getting both easily.
@@ -151,7 +157,7 @@ void ProfilerListener::CodeCreateEvent(CodeEventListener::LogEventsAndTags tag,
151157 base::make_unique<CodeEntry>(
152158 tag, GetName (pos_info.shared ->DebugName ()), resource_name,
153159 start_pos_info.line + 1 , start_pos_info.column + 1 , nullptr ,
154- code->InstructionStart ());
160+ code->InstructionStart (), inline_is_shared_cross_origin );
155161 inline_entry->FillFunctionInfo (*pos_info.shared );
156162
157163 // Create a canonical CodeEntry for each inlined frame and then re-use
@@ -168,9 +174,10 @@ void ProfilerListener::CodeCreateEvent(CodeEventListener::LogEventsAndTags tag,
168174 }
169175 }
170176 rec->entry =
171- NewCodeEntry (tag, GetName (shared->DebugName ()),
172- GetName (InferScriptName (script_name, shared)), line, column,
173- std::move (line_table), abstract_code->InstructionStart ());
177+ new CodeEntry (tag, GetName (shared->DebugName ()),
178+ GetName (InferScriptName (script_name, shared)), line, column,
179+ std::move (line_table), abstract_code->InstructionStart (),
180+ is_shared_cross_origin);
174181 if (!inline_stacks.empty ()) {
175182 rec->entry ->SetInlineStacks (std::move (cached_inline_entries),
176183 std::move (inline_stacks));
@@ -187,10 +194,10 @@ void ProfilerListener::CodeCreateEvent(CodeEventListener::LogEventsAndTags tag,
187194 CodeEventsContainer evt_rec (CodeEventRecord::CODE_CREATION);
188195 CodeCreateEventRecord* rec = &evt_rec.CodeCreateEventRecord_ ;
189196 rec->instruction_start = code->instruction_start ();
190- rec->entry = NewCodeEntry (
197+ rec->entry = new CodeEntry (
191198 tag, GetName (name.start ()), CodeEntry::kWasmResourceNamePrefix ,
192199 CpuProfileNode::kNoLineNumberInfo , CpuProfileNode::kNoColumnNumberInfo ,
193- nullptr , code->instruction_start ());
200+ nullptr , code->instruction_start (), true );
194201 rec->instruction_size = code->instructions ().length ();
195202 DispatchCodeEvent (evt_rec);
196203}
@@ -234,7 +241,7 @@ void ProfilerListener::GetterCallbackEvent(Name name, Address entry_point) {
234241 CodeCreateEventRecord* rec = &evt_rec.CodeCreateEventRecord_ ;
235242 rec->instruction_start = entry_point;
236243 rec->entry =
237- NewCodeEntry (CodeEventListener::CALLBACK_TAG, GetConsName (" get " , name));
244+ new CodeEntry (CodeEventListener::CALLBACK_TAG, GetConsName (" get " , name));
238245 rec->instruction_size = 1 ;
239246 DispatchCodeEvent (evt_rec);
240247}
@@ -243,7 +250,7 @@ void ProfilerListener::RegExpCodeCreateEvent(AbstractCode code, String source) {
243250 CodeEventsContainer evt_rec (CodeEventRecord::CODE_CREATION);
244251 CodeCreateEventRecord* rec = &evt_rec.CodeCreateEventRecord_ ;
245252 rec->instruction_start = code->InstructionStart ();
246- rec->entry = NewCodeEntry (
253+ rec->entry = new CodeEntry (
247254 CodeEventListener::REG_EXP_TAG, GetConsName (" RegExp: " , source),
248255 CodeEntry::kEmptyResourceName , CpuProfileNode::kNoLineNumberInfo ,
249256 CpuProfileNode::kNoColumnNumberInfo , nullptr , code->InstructionStart ());
@@ -256,7 +263,7 @@ void ProfilerListener::SetterCallbackEvent(Name name, Address entry_point) {
256263 CodeCreateEventRecord* rec = &evt_rec.CodeCreateEventRecord_ ;
257264 rec->instruction_start = entry_point;
258265 rec->entry =
259- NewCodeEntry (CodeEventListener::CALLBACK_TAG, GetConsName (" set " , name));
266+ new CodeEntry (CodeEventListener::CALLBACK_TAG, GetConsName (" set " , name));
260267 rec->instruction_size = 1 ;
261268 DispatchCodeEvent (evt_rec);
262269}
@@ -317,13 +324,5 @@ void ProfilerListener::AttachDeoptInlinedFrames(Code code,
317324 }
318325}
319326
320- CodeEntry* ProfilerListener::NewCodeEntry (
321- CodeEventListener::LogEventsAndTags tag, const char * name,
322- const char * resource_name, int line_number, int column_number,
323- std::unique_ptr<SourcePositionTable> line_info, Address instruction_start) {
324- return new CodeEntry (tag, name, resource_name, line_number, column_number,
325- std::move (line_info), instruction_start);
326- }
327-
328327} // namespace internal
329328} // namespace v8
0 commit comments