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

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

Issue 2817533003: Replace ASSERT, RELEASE_ASSERT, and ASSERT_NOT_REACHED in bindings (Closed)
Patch Set: fixed dcheck build error Created 3 years, 8 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 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 bool IsResourceHotForCaching(CachedMetadataHandler* cache_handler, 253 bool IsResourceHotForCaching(CachedMetadataHandler* cache_handler,
254 int hot_hours) { 254 int hot_hours) {
255 const double cache_within_seconds = hot_hours * 60 * 60; 255 const double cache_within_seconds = hot_hours * 60 * 60;
256 uint32_t tag = CacheTag(kCacheTagTimeStamp, cache_handler); 256 uint32_t tag = CacheTag(kCacheTagTimeStamp, cache_handler);
257 RefPtr<CachedMetadata> cached_metadata = 257 RefPtr<CachedMetadata> cached_metadata =
258 cache_handler->GetCachedMetadata(tag); 258 cache_handler->GetCachedMetadata(tag);
259 if (!cached_metadata) 259 if (!cached_metadata)
260 return false; 260 return false;
261 double time_stamp; 261 double time_stamp;
262 const int size = sizeof(time_stamp); 262 const int size = sizeof(time_stamp);
263 ASSERT(cached_metadata->size() == size); 263 DCHECK_EQ(cached_metadata->size(), static_cast<unsigned long>(size));
264 memcpy(&time_stamp, cached_metadata->Data(), size); 264 memcpy(&time_stamp, cached_metadata->Data(), size);
265 return (WTF::CurrentTime() - time_stamp) < cache_within_seconds; 265 return (WTF::CurrentTime() - time_stamp) < cache_within_seconds;
266 } 266 }
267 267
268 // Final compile call for a streamed compilation. Most decisions have already 268 // Final compile call for a streamed compilation. Most decisions have already
269 // been made, but we need to write back data into the cache. 269 // been made, but we need to write back data into the cache.
270 v8::MaybeLocal<v8::Script> PostStreamCompile( 270 v8::MaybeLocal<v8::Script> PostStreamCompile(
271 V8CacheOptions cache_options, 271 V8CacheOptions cache_options,
272 CachedMetadataHandler* cache_handler, 272 CachedMetadataHandler* cache_handler,
273 ScriptStreamer* streamer, 273 ScriptStreamer* streamer,
(...skipping 28 matching lines...) Expand all
302 break; 302 break;
303 } 303 }
304 304
305 case kV8CacheOptionsDefault: 305 case kV8CacheOptionsDefault:
306 case kV8CacheOptionsCode: 306 case kV8CacheOptionsCode:
307 V8ScriptRunner::SetCacheTimeStamp(cache_handler); 307 V8ScriptRunner::SetCacheTimeStamp(cache_handler);
308 break; 308 break;
309 309
310 case kV8CacheOptionsAlways: 310 case kV8CacheOptionsAlways:
311 // Currently V8CacheOptionsAlways doesn't support streaming. 311 // Currently V8CacheOptionsAlways doesn't support streaming.
312 ASSERT_NOT_REACHED(); 312 NOTREACHED();
313 case kV8CacheOptionsNone: 313 case kV8CacheOptionsNone:
314 break; 314 break;
315 } 315 }
316 return script; 316 return script;
317 } 317 }
318 318
319 typedef Function<v8::MaybeLocal<v8::Script>(v8::Isolate*, 319 typedef Function<v8::MaybeLocal<v8::Script>(v8::Isolate*,
320 v8::Local<v8::String>, 320 v8::Local<v8::String>,
321 v8::ScriptOrigin)> 321 v8::ScriptOrigin)>
322 CompileFn; 322 CompileFn;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 uint32_t code_cache_tag = CacheTag(kCacheTagCode, cache_handler); 382 uint32_t code_cache_tag = CacheTag(kCacheTagCode, cache_handler);
383 return Bind(CompileAndProduceCache, WrapPersistent(cache_handler), 383 return Bind(CompileAndProduceCache, WrapPersistent(cache_handler),
384 code_cache_tag, v8::ScriptCompiler::kProduceCodeCache, 384 code_cache_tag, v8::ScriptCompiler::kProduceCodeCache,
385 CachedMetadataHandler::kSendToPlatform); 385 CachedMetadataHandler::kSendToPlatform);
386 break; 386 break;
387 } 387 }
388 388
389 case kV8CacheOptionsNone: 389 case kV8CacheOptionsNone:
390 // Shouldn't happen, as this is handled above. 390 // Shouldn't happen, as this is handled above.
391 // Case is here so that compiler can check all cases are handled. 391 // Case is here so that compiler can check all cases are handled.
392 ASSERT_NOT_REACHED(); 392 NOTREACHED();
393 break; 393 break;
394 } 394 }
395 395
396 // All switch branches should return and we should never get here. 396 // All switch branches should return and we should never get here.
397 // But some compilers aren't sure, hence this default. 397 // But some compilers aren't sure, hence this default.
398 ASSERT_NOT_REACHED(); 398 NOTREACHED();
399 return Bind(CompileWithoutOptions, V8CompileHistogram::kCacheable); 399 return Bind(CompileWithoutOptions, V8CompileHistogram::kCacheable);
400 } 400 }
401 401
402 // Select a compile function for a streaming compile. 402 // Select a compile function for a streaming compile.
403 std::unique_ptr<CompileFn> SelectCompileFunction(V8CacheOptions cache_options, 403 std::unique_ptr<CompileFn> SelectCompileFunction(V8CacheOptions cache_options,
404 ScriptResource* resource, 404 ScriptResource* resource,
405 ScriptStreamer* streamer) { 405 ScriptStreamer* streamer) {
406 // We don't stream scripts which don't have a Resource. 406 // We don't stream scripts which don't have a Resource.
407 ASSERT(resource); 407 DCHECK(resource);
408 // Failed resources should never get this far. 408 // Failed resources should never get this far.
409 ASSERT(!resource->ErrorOccurred()); 409 DCHECK(!resource->ErrorOccurred());
410 ASSERT(streamer->IsFinished()); 410 DCHECK(streamer->IsFinished());
411 ASSERT(!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 const ScriptSourceCode& source, 419 const ScriptSourceCode& source,
420 v8::Isolate* isolate, 420 v8::Isolate* isolate,
421 AccessControlStatus access_control_status, 421 AccessControlStatus access_control_status,
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 ScriptResource* resource, 459 ScriptResource* resource,
460 ScriptStreamer* streamer, 460 ScriptStreamer* streamer,
461 CachedMetadataHandler* cache_handler, 461 CachedMetadataHandler* cache_handler,
462 AccessControlStatus access_control_status, 462 AccessControlStatus access_control_status,
463 V8CacheOptions cache_options) { 463 V8CacheOptions cache_options) {
464 TRACE_EVENT2( 464 TRACE_EVENT2(
465 "v8,devtools.timeline", "v8.compile", "fileName", file_name.Utf8(), 465 "v8,devtools.timeline", "v8.compile", "fileName", file_name.Utf8(),
466 "data", 466 "data",
467 InspectorCompileScriptEvent::Data(file_name, script_start_position)); 467 InspectorCompileScriptEvent::Data(file_name, script_start_position));
468 468
469 ASSERT(!streamer || resource); 469 DCHECK(!streamer || resource);
470 ASSERT(!resource || resource->CacheHandler() == cache_handler); 470 DCHECK(!resource || resource->CacheHandler() == cache_handler);
471 471
472 // NOTE: For compatibility with WebCore, ScriptSourceCode's line starts at 472 // NOTE: For compatibility with WebCore, ScriptSourceCode's line starts at
473 // 1, whereas v8 starts at 0. 473 // 1, whereas v8 starts at 0.
474 v8::ScriptOrigin origin( 474 v8::ScriptOrigin origin(
475 V8String(isolate, file_name), 475 V8String(isolate, file_name),
476 v8::Integer::New(isolate, script_start_position.line_.ZeroBasedInt()), 476 v8::Integer::New(isolate, script_start_position.line_.ZeroBasedInt()),
477 v8::Integer::New(isolate, script_start_position.column_.ZeroBasedInt()), 477 v8::Integer::New(isolate, script_start_position.column_.ZeroBasedInt()),
478 V8Boolean(access_control_status == kSharableCrossOrigin, isolate), 478 V8Boolean(access_control_status == kSharableCrossOrigin, isolate),
479 v8::Local<v8::Integer>(), V8String(isolate, source_map_url), 479 v8::Local<v8::Integer>(), V8String(isolate, source_map_url),
480 V8Boolean(access_control_status == kOpaqueResource, isolate)); 480 V8Boolean(access_control_status == kOpaqueResource, isolate));
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 V8Boolean(true, isolate)); // is_module 518 V8Boolean(true, isolate)); // is_module
519 519
520 v8::ScriptCompiler::Source script_source(V8String(isolate, source), origin); 520 v8::ScriptCompiler::Source script_source(V8String(isolate, source), origin);
521 return v8::ScriptCompiler::CompileModule(isolate, &script_source); 521 return v8::ScriptCompiler::CompileModule(isolate, &script_source);
522 } 522 }
523 523
524 v8::MaybeLocal<v8::Value> V8ScriptRunner::RunCompiledScript( 524 v8::MaybeLocal<v8::Value> V8ScriptRunner::RunCompiledScript(
525 v8::Isolate* isolate, 525 v8::Isolate* isolate,
526 v8::Local<v8::Script> script, 526 v8::Local<v8::Script> script,
527 ExecutionContext* context) { 527 ExecutionContext* context) {
528 ASSERT(!script.IsEmpty()); 528 DCHECK(!script.IsEmpty());
529 ScopedFrameBlamer frame_blamer( 529 ScopedFrameBlamer frame_blamer(
530 context->IsDocument() ? ToDocument(context)->GetFrame() : nullptr); 530 context->IsDocument() ? ToDocument(context)->GetFrame() : nullptr);
531 TRACE_EVENT1("v8", "v8.run", "fileName", 531 TRACE_EVENT1("v8", "v8.run", "fileName",
532 TRACE_STR_COPY(*v8::String::Utf8Value( 532 TRACE_STR_COPY(*v8::String::Utf8Value(
533 script->GetUnboundScript()->GetScriptName()))); 533 script->GetUnboundScript()->GetScriptName())));
534 534
535 if (v8::MicrotasksScope::GetCurrentDepth(isolate) >= kMaxRecursionDepth) 535 if (v8::MicrotasksScope::GetCurrentDepth(isolate) >= kMaxRecursionDepth)
536 return ThrowStackOverflowExceptionIfNeeded(isolate); 536 return ThrowStackOverflowExceptionIfNeeded(isolate);
537 537
538 RELEASE_ASSERT(!context->IsIteratingOverObservers()); 538 CHECK(!context->IsIteratingOverObservers());
539 539
540 // Run the script and keep track of the current recursion depth. 540 // Run the script and keep track of the current recursion depth.
541 v8::MaybeLocal<v8::Value> result; 541 v8::MaybeLocal<v8::Value> result;
542 { 542 {
543 if (ScriptForbiddenScope::IsScriptForbidden()) { 543 if (ScriptForbiddenScope::IsScriptForbidden()) {
544 ThrowScriptForbiddenException(isolate); 544 ThrowScriptForbiddenException(isolate);
545 return v8::MaybeLocal<v8::Value>(); 545 return v8::MaybeLocal<v8::Value>();
546 } 546 }
547 v8::MicrotasksScope microtasks_scope(isolate, 547 v8::MicrotasksScope microtasks_scope(isolate,
548 v8::MicrotasksScope::kRunMicrotasks); 548 v8::MicrotasksScope::kRunMicrotasks);
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 LocalFrame* frame = 631 LocalFrame* frame =
632 context->IsDocument() ? ToDocument(context)->GetFrame() : nullptr; 632 context->IsDocument() ? ToDocument(context)->GetFrame() : nullptr;
633 ScopedFrameBlamer frame_blamer(frame); 633 ScopedFrameBlamer frame_blamer(frame);
634 TRACE_EVENT0("v8", "v8.callFunction"); 634 TRACE_EVENT0("v8", "v8.callFunction");
635 635
636 int depth = v8::MicrotasksScope::GetCurrentDepth(isolate); 636 int depth = v8::MicrotasksScope::GetCurrentDepth(isolate);
637 if (depth >= kMaxRecursionDepth) 637 if (depth >= kMaxRecursionDepth)
638 return v8::MaybeLocal<v8::Value>( 638 return v8::MaybeLocal<v8::Value>(
639 ThrowStackOverflowExceptionIfNeeded(isolate)); 639 ThrowStackOverflowExceptionIfNeeded(isolate));
640 640
641 RELEASE_ASSERT(!context->IsIteratingOverObservers()); 641 CHECK(!context->IsIteratingOverObservers());
642 642
643 if (ScriptForbiddenScope::IsScriptForbidden()) { 643 if (ScriptForbiddenScope::IsScriptForbidden()) {
644 ThrowScriptForbiddenException(isolate); 644 ThrowScriptForbiddenException(isolate);
645 return v8::MaybeLocal<v8::Value>(); 645 return v8::MaybeLocal<v8::Value>();
646 } 646 }
647 647
648 DCHECK(!frame || BindingSecurity::ShouldAllowAccessToFrame( 648 DCHECK(!frame || BindingSecurity::ShouldAllowAccessToFrame(
649 ToLocalDOMWindow(function->CreationContext()), frame, 649 ToLocalDOMWindow(function->CreationContext()), frame,
650 BindingSecurity::ErrorReportOption::kDoNotReport)); 650 BindingSecurity::ErrorReportOption::kDoNotReport));
651 CHECK(!ThreadState::Current()->IsWrapperTracingForbidden()); 651 CHECK(!ThreadState::Current()->IsWrapperTracingForbidden());
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 V8AtomicString(isolate, "((e) => { throw e; })"), origin) 723 V8AtomicString(isolate, "((e) => { throw e; })"), origin)
724 .ToLocalChecked(); 724 .ToLocalChecked();
725 v8::Local<v8::Function> thrower = RunCompiledInternalScript(isolate, script) 725 v8::Local<v8::Function> thrower = RunCompiledInternalScript(isolate, script)
726 .ToLocalChecked() 726 .ToLocalChecked()
727 .As<v8::Function>(); 727 .As<v8::Function>();
728 v8::Local<v8::Value> args[] = {exception}; 728 v8::Local<v8::Value> args[] = {exception};
729 CallInternalFunction(thrower, thrower, WTF_ARRAY_LENGTH(args), args, isolate); 729 CallInternalFunction(thrower, thrower, WTF_ARRAY_LENGTH(args), args, isolate);
730 } 730 }
731 731
732 } // namespace blink 732 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698