Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 29 matching lines...) Expand all Loading... | |
| 40 #include "bindings/core/v8/V8PerContextData.h" | 40 #include "bindings/core/v8/V8PerContextData.h" |
| 41 #include "bindings/core/v8/V8Window.h" | 41 #include "bindings/core/v8/V8Window.h" |
| 42 #include "core/dom/Document.h" | 42 #include "core/dom/Document.h" |
| 43 #include "core/dom/ExceptionCode.h" | 43 #include "core/dom/ExceptionCode.h" |
| 44 #include "core/frame/ConsoleTypes.h" | 44 #include "core/frame/ConsoleTypes.h" |
| 45 #include "core/frame/LocalDOMWindow.h" | 45 #include "core/frame/LocalDOMWindow.h" |
| 46 #include "core/frame/LocalFrame.h" | 46 #include "core/frame/LocalFrame.h" |
| 47 #include "core/frame/csp/ContentSecurityPolicy.h" | 47 #include "core/frame/csp/ContentSecurityPolicy.h" |
| 48 #include "core/inspector/ScriptCallStack.h" | 48 #include "core/inspector/ScriptCallStack.h" |
| 49 #include "platform/EventDispatchForbiddenScope.h" | 49 #include "platform/EventDispatchForbiddenScope.h" |
| 50 #include "platform/RuntimeEnabledFeatures.h" | |
| 50 #include "platform/TraceEvent.h" | 51 #include "platform/TraceEvent.h" |
| 52 #include "platform/scheduler/Scheduler.h" | |
| 51 #include "public/platform/Platform.h" | 53 #include "public/platform/Platform.h" |
| 52 #include "wtf/RefPtr.h" | 54 #include "wtf/RefPtr.h" |
| 53 #include "wtf/text/WTFString.h" | 55 #include "wtf/text/WTFString.h" |
| 54 #include <v8-debug.h> | 56 #include <v8-debug.h> |
| 55 | 57 |
| 56 namespace blink { | 58 namespace blink { |
| 57 | 59 |
| 58 static LocalFrame* findFrame(v8::Local<v8::Object> host, v8::Local<v8::Value> da ta, v8::Isolate* isolate) | 60 static LocalFrame* findFrame(v8::Local<v8::Object> host, v8::Local<v8::Value> da ta, v8::Isolate* isolate) |
| 59 { | 61 { |
| 60 const WrapperTypeInfo* type = WrapperTypeInfo::unwrap(data); | 62 const WrapperTypeInfo* type = WrapperTypeInfo::unwrap(data); |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 171 | 173 |
| 172 static bool codeGenerationCheckCallbackInMainThread(v8::Local<v8::Context> conte xt) | 174 static bool codeGenerationCheckCallbackInMainThread(v8::Local<v8::Context> conte xt) |
| 173 { | 175 { |
| 174 if (ExecutionContext* executionContext = toExecutionContext(context)) { | 176 if (ExecutionContext* executionContext = toExecutionContext(context)) { |
| 175 if (ContentSecurityPolicy* policy = toDocument(executionContext)->conten tSecurityPolicy()) | 177 if (ContentSecurityPolicy* policy = toDocument(executionContext)->conten tSecurityPolicy()) |
| 176 return policy->allowEval(ScriptState::from(context)); | 178 return policy->allowEval(ScriptState::from(context)); |
| 177 } | 179 } |
| 178 return false; | 180 return false; |
| 179 } | 181 } |
| 180 | 182 |
| 183 static void idleGCTaskInMainThread(double deadlineSeconds); | |
| 184 | |
| 185 static void postIdleGCTaskMainThread() | |
| 186 { | |
| 187 if (RuntimeEnabledFeatures::v8IdleTasksEnabled()) { | |
| 188 Scheduler* scheduler = Scheduler::shared(); | |
| 189 if (scheduler) | |
| 190 scheduler->postIdleTask(FROM_HERE, WTF::bind<double>(idleGCTaskInMai nThread)); | |
| 191 } | |
| 192 } | |
| 193 | |
| 194 static void idleGCTaskInMainThread(double deadlineSeconds) | |
| 195 { | |
| 196 ASSERT(isMainThread()); | |
| 197 ASSERT(RuntimeEnabledFeatures::v8IdleTasksEnabled()); | |
| 198 v8::Isolate* isolate = v8::Isolate::GetCurrent(); | |
| 199 // TODO: Change V8's API to take a deadline - http://crbug.com/417668 | |
|
jochen (gone - plz use gerrit)
2014/10/13 08:06:20
blink has FIXME: instead of TODO
rmcilroy
2014/10/13 11:22:07
Done.
| |
| 200 double idleTimeInSeconds = deadlineSeconds - Platform::current()->monotonica llyIncreasingTime(); | |
| 201 int idleTimeInMillis = static_cast<int>(idleTimeInSeconds * 1000); | |
| 202 if (idleTimeInMillis > 0) { | |
|
jochen (gone - plz use gerrit)
2014/10/13 08:06:20
no { } required
jochen (gone - plz use gerrit)
2014/10/13 08:06:20
no { } required
rmcilroy
2014/10/13 11:22:08
Done.
| |
| 203 isolate->IdleNotification(idleTimeInMillis); | |
| 204 } | |
| 205 // TODO: only repost if there is more work to do. | |
| 206 postIdleGCTaskMainThread(); | |
|
jochen (gone - plz use gerrit)
2014/10/13 08:06:20
how will you make sure that you don't end up squee
rmcilroy
2014/10/13 11:22:07
CL https://codereview.chromium.org/640053003/ deal
| |
| 207 } | |
| 208 | |
| 181 static void timerTraceProfilerInMainThread(const char* name, int status) | 209 static void timerTraceProfilerInMainThread(const char* name, int status) |
| 182 { | 210 { |
| 183 if (!status) { | 211 if (!status) { |
| 184 TRACE_EVENT_BEGIN0("v8", name); | 212 TRACE_EVENT_BEGIN0("v8", name); |
| 185 } else { | 213 } else { |
| 186 TRACE_EVENT_END0("v8", name); | 214 TRACE_EVENT_END0("v8", name); |
| 187 } | 215 } |
| 188 } | 216 } |
| 189 | 217 |
| 190 static void initializeV8Common(v8::Isolate* isolate) | 218 static void initializeV8Common(v8::Isolate* isolate) |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 266 initializeV8Common(isolate); | 294 initializeV8Common(isolate); |
| 267 | 295 |
| 268 v8::V8::AddMessageListener(messageHandlerInWorker); | 296 v8::V8::AddMessageListener(messageHandlerInWorker); |
| 269 v8::V8::SetFatalErrorHandler(reportFatalErrorInWorker); | 297 v8::V8::SetFatalErrorHandler(reportFatalErrorInWorker); |
| 270 | 298 |
| 271 uint32_t here; | 299 uint32_t here; |
| 272 isolate->SetStackLimit(reinterpret_cast<uintptr_t>(&here - kWorkerMaxStackSi ze / sizeof(uint32_t*))); | 300 isolate->SetStackLimit(reinterpret_cast<uintptr_t>(&here - kWorkerMaxStackSi ze / sizeof(uint32_t*))); |
| 273 } | 301 } |
| 274 | 302 |
| 275 } // namespace blink | 303 } // namespace blink |
| OLD | NEW |