Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Side by Side Diff: third_party/WebKit/Source/bindings/core/v8/V8ScriptRunner.cpp

Issue 2962353002: Add probe for V8.Complie (Closed)
Patch Set: correct executionContext usage Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 DCHECK(!resource->ErrorOccurred()); 409 DCHECK(!resource->ErrorOccurred());
410 DCHECK(streamer->IsFinished()); 410 DCHECK(streamer->IsFinished());
411 DCHECK(!streamer->StreamingSuppressed()); 411 DCHECK(!streamer->StreamingSuppressed());
412 return WTF::Bind(PostStreamCompile, cache_options, 412 return WTF::Bind(PostStreamCompile, cache_options,
413 WrapPersistent(resource->CacheHandler()), 413 WrapPersistent(resource->CacheHandler()),
414 WrapPersistent(streamer)); 414 WrapPersistent(streamer));
415 } 415 }
416 } // namespace 416 } // namespace
417 417
418 v8::MaybeLocal<v8::Script> V8ScriptRunner::CompileScript( 418 v8::MaybeLocal<v8::Script> V8ScriptRunner::CompileScript(
419 ExecutionContext* context,
419 const ScriptSourceCode& source, 420 const ScriptSourceCode& source,
420 v8::Isolate* isolate, 421 v8::Isolate* isolate,
421 AccessControlStatus access_control_status, 422 AccessControlStatus access_control_status,
422 V8CacheOptions cache_options) { 423 V8CacheOptions cache_options) {
423 if (source.Source().length() >= v8::String::kMaxLength) { 424 if (source.Source().length() >= v8::String::kMaxLength) {
424 V8ThrowException::ThrowError(isolate, "Source file too large."); 425 V8ThrowException::ThrowError(isolate, "Source file too large.");
425 return v8::Local<v8::Script>(); 426 return v8::Local<v8::Script>();
426 } 427 }
427 return CompileScript( 428 return CompileScript(
428 V8String(isolate, source.Source()), source.Url(), source.SourceMapUrl(), 429 context, V8String(isolate, source.Source()), source.Url(),
429 source.StartPosition(), isolate, source.GetResource(), source.Streamer(), 430 source.SourceMapUrl(), source.StartPosition(), isolate,
431 source.GetResource(), source.Streamer(),
430 source.GetResource() ? source.GetResource()->CacheHandler() : nullptr, 432 source.GetResource() ? source.GetResource()->CacheHandler() : nullptr,
431 access_control_status, cache_options); 433 access_control_status, cache_options);
432 } 434 }
433 435
434 v8::MaybeLocal<v8::Script> V8ScriptRunner::CompileScript( 436 v8::MaybeLocal<v8::Script> V8ScriptRunner::CompileScript(
437 ExecutionContext* context,
435 const String& code, 438 const String& code,
436 const String& file_name, 439 const String& file_name,
437 const String& source_map_url, 440 const String& source_map_url,
438 const TextPosition& text_position, 441 const TextPosition& text_position,
439 v8::Isolate* isolate, 442 v8::Isolate* isolate,
440 CachedMetadataHandler* cache_metadata_handler, 443 CachedMetadataHandler* cache_metadata_handler,
441 AccessControlStatus access_control_status, 444 AccessControlStatus access_control_status,
442 V8CacheOptions v8_cache_options) { 445 V8CacheOptions v8_cache_options) {
443 if (code.length() >= v8::String::kMaxLength) { 446 if (code.length() >= v8::String::kMaxLength) {
444 V8ThrowException::ThrowError(isolate, "Source file too large."); 447 V8ThrowException::ThrowError(isolate, "Source file too large.");
445 return v8::Local<v8::Script>(); 448 return v8::Local<v8::Script>();
446 } 449 }
447 return CompileScript(V8String(isolate, code), file_name, source_map_url, 450 return CompileScript(context, V8String(isolate, code), file_name,
448 text_position, isolate, nullptr, nullptr, 451 source_map_url, text_position, isolate, nullptr, nullptr,
449 cache_metadata_handler, access_control_status, 452 cache_metadata_handler, access_control_status,
450 v8_cache_options); 453 v8_cache_options);
451 } 454 }
452 455
453 v8::MaybeLocal<v8::Script> V8ScriptRunner::CompileScript( 456 v8::MaybeLocal<v8::Script> V8ScriptRunner::CompileScript(
457 ExecutionContext* context,
454 v8::Local<v8::String> code, 458 v8::Local<v8::String> code,
455 const String& file_name, 459 const String& file_name,
456 const String& source_map_url, 460 const String& source_map_url,
457 const TextPosition& script_start_position, 461 const TextPosition& script_start_position,
458 v8::Isolate* isolate, 462 v8::Isolate* isolate,
459 ScriptResource* resource, 463 ScriptResource* resource,
460 ScriptStreamer* streamer, 464 ScriptStreamer* streamer,
461 CachedMetadataHandler* cache_handler, 465 CachedMetadataHandler* cache_handler,
462 AccessControlStatus access_control_status, 466 AccessControlStatus access_control_status,
463 V8CacheOptions cache_options) { 467 V8CacheOptions cache_options) {
464 TRACE_EVENT2( 468 TRACE_EVENT2(
465 "v8,devtools.timeline", "v8.compile", "fileName", file_name.Utf8(), 469 "v8,devtools.timeline", "v8.compile", "fileName", file_name.Utf8(),
466 "data", 470 "data",
467 InspectorCompileScriptEvent::Data(file_name, script_start_position)); 471 InspectorCompileScriptEvent::Data(file_name, script_start_position));
472 probe::V8Compile probe(context, file_name,
473 script_start_position.line_.ZeroBasedInt(),
474 script_start_position.column_.ZeroBasedInt());
468 475
469 DCHECK(!streamer || resource); 476 DCHECK(!streamer || resource);
470 DCHECK(!resource || resource->CacheHandler() == cache_handler); 477 DCHECK(!resource || resource->CacheHandler() == cache_handler);
471 478
472 // NOTE: For compatibility with WebCore, ScriptSourceCode's line starts at 479 // NOTE: For compatibility with WebCore, ScriptSourceCode's line starts at
473 // 1, whereas v8 starts at 0. 480 // 1, whereas v8 starts at 0.
474 v8::ScriptOrigin origin( 481 v8::ScriptOrigin origin(
475 V8String(isolate, file_name), 482 V8String(isolate, file_name),
476 v8::Integer::New(isolate, script_start_position.line_.ZeroBasedInt()), 483 v8::Integer::New(isolate, script_start_position.line_.ZeroBasedInt()),
477 v8::Integer::New(isolate, script_start_position.column_.ZeroBasedInt()), 484 v8::Integer::New(isolate, script_start_position.column_.ZeroBasedInt()),
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 v8::MicrotasksScope::kRunMicrotasks); 581 v8::MicrotasksScope::kRunMicrotasks);
575 probe::ExecuteScript probe(context); 582 probe::ExecuteScript probe(context);
576 result = script->Run(isolate->GetCurrentContext()); 583 result = script->Run(isolate->GetCurrentContext());
577 } 584 }
578 585
579 CHECK(!isolate->IsDead()); 586 CHECK(!isolate->IsDead());
580 return result; 587 return result;
581 } 588 }
582 589
583 v8::MaybeLocal<v8::Value> V8ScriptRunner::CompileAndRunInternalScript( 590 v8::MaybeLocal<v8::Value> V8ScriptRunner::CompileAndRunInternalScript(
591 ExecutionContext* context,
584 v8::Local<v8::String> source, 592 v8::Local<v8::String> source,
585 v8::Isolate* isolate, 593 v8::Isolate* isolate,
586 const String& file_name, 594 const String& file_name,
587 const TextPosition& script_start_position) { 595 const TextPosition& script_start_position) {
588 v8::Local<v8::Script> script; 596 v8::Local<v8::Script> script;
589 if (!V8ScriptRunner::CompileScript( 597 if (!V8ScriptRunner::CompileScript(context, source, file_name, String(),
590 source, file_name, String(), script_start_position, isolate, nullptr, 598 script_start_position, isolate, nullptr,
591 nullptr, nullptr, kSharableCrossOrigin, kV8CacheOptionsDefault) 599 nullptr, nullptr, kSharableCrossOrigin,
600 kV8CacheOptionsDefault)
592 .ToLocal(&script)) 601 .ToLocal(&script))
593 return v8::MaybeLocal<v8::Value>(); 602 return v8::MaybeLocal<v8::Value>();
594 603
595 TRACE_EVENT0("v8", "v8.run"); 604 TRACE_EVENT0("v8", "v8.run");
596 RuntimeCallStatsScopedTracer rcs_scoped_tracer(isolate); 605 RuntimeCallStatsScopedTracer rcs_scoped_tracer(isolate);
597 RUNTIME_CALL_TIMER_SCOPE(isolate, RuntimeCallStats::CounterId::kV8); 606 RUNTIME_CALL_TIMER_SCOPE(isolate, RuntimeCallStats::CounterId::kV8);
598 v8::MicrotasksScope microtasks_scope( 607 v8::MicrotasksScope microtasks_scope(
599 isolate, v8::MicrotasksScope::kDoNotRunMicrotasks); 608 isolate, v8::MicrotasksScope::kDoNotRunMicrotasks);
600 v8::MaybeLocal<v8::Value> result = script->Run(isolate->GetCurrentContext()); 609 v8::MaybeLocal<v8::Value> result = script->Run(isolate->GetCurrentContext());
601 CHECK(!isolate->IsDead()); 610 CHECK(!isolate->IsDead());
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 if (!context->GetExtrasBindingObject() 791 if (!context->GetExtrasBindingObject()
783 ->Get(context, V8AtomicString(isolate, name)) 792 ->Get(context, V8AtomicString(isolate, name))
784 .ToLocal(&function_value)) 793 .ToLocal(&function_value))
785 return v8::MaybeLocal<v8::Value>(); 794 return v8::MaybeLocal<v8::Value>();
786 v8::Local<v8::Function> function = function_value.As<v8::Function>(); 795 v8::Local<v8::Function> function = function_value.As<v8::Function>();
787 return V8ScriptRunner::CallInternalFunction(function, v8::Undefined(isolate), 796 return V8ScriptRunner::CallInternalFunction(function, v8::Undefined(isolate),
788 num_args, args, isolate); 797 num_args, args, isolate);
789 } 798 }
790 799
791 } // namespace blink 800 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698