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

Side by Side Diff: Source/core/workers/WorkerThread.h

Issue 1140503003: workers: Change how debugger-tasks are posted to the thread. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: back-to-patchset2 Created 5 years, 7 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/workers/WorkerInspectorProxy.cpp ('k') | Source/core/workers/WorkerThread.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. 2 * Copyright (C) 2008 Apple 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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 43
44 namespace blink { 44 namespace blink {
45 45
46 class WebWaitableEvent; 46 class WebWaitableEvent;
47 class WorkerGlobalScope; 47 class WorkerGlobalScope;
48 class WorkerInspectorController; 48 class WorkerInspectorController;
49 class WorkerMicrotaskRunner; 49 class WorkerMicrotaskRunner;
50 class WorkerReportingProxy; 50 class WorkerReportingProxy;
51 class WorkerSharedTimer; 51 class WorkerSharedTimer;
52 class WorkerThreadStartupData; 52 class WorkerThreadStartupData;
53 class WorkerThreadTask;
54 53
55 enum WorkerThreadStartMode { 54 enum WorkerThreadStartMode {
56 DontPauseWorkerGlobalScopeOnStart, 55 DontPauseWorkerGlobalScopeOnStart,
57 PauseWorkerGlobalScopeOnStart 56 PauseWorkerGlobalScopeOnStart
58 }; 57 };
59 58
60 // TODO(sadrul): Rename to WorkerScript. 59 // TODO(sadrul): Rename to WorkerScript.
61 class CORE_EXPORT WorkerThread : public RefCounted<WorkerThread> { 60 class CORE_EXPORT WorkerThread : public RefCounted<WorkerThread> {
62 public: 61 public:
63 virtual ~WorkerThread(); 62 virtual ~WorkerThread();
(...skipping 23 matching lines...) Expand all
87 bool isCurrentThread(); 86 bool isCurrentThread();
88 WorkerLoaderProxy* workerLoaderProxy() const 87 WorkerLoaderProxy* workerLoaderProxy() const
89 { 88 {
90 RELEASE_ASSERT(m_workerLoaderProxy); 89 RELEASE_ASSERT(m_workerLoaderProxy);
91 return m_workerLoaderProxy.get(); 90 return m_workerLoaderProxy.get();
92 } 91 }
93 92
94 WorkerReportingProxy& workerReportingProxy() const { return m_workerReportin gProxy; } 93 WorkerReportingProxy& workerReportingProxy() const { return m_workerReportin gProxy; }
95 94
96 void postTask(const WebTraceLocation&, PassOwnPtr<ExecutionContextTask>); 95 void postTask(const WebTraceLocation&, PassOwnPtr<ExecutionContextTask>);
97 void postDebuggerTask(const WebTraceLocation&, PassOwnPtr<ExecutionContextTa sk>); 96 void appendDebuggerTask(PassOwnPtr<WebThread::Task>);
98 97
99 enum WaitMode { WaitForMessage, DontWaitForMessage }; 98 enum WaitMode { WaitForMessage, DontWaitForMessage };
100 MessageQueueWaitResult runDebuggerTask(WaitMode = WaitForMessage); 99 MessageQueueWaitResult runDebuggerTask(WaitMode = WaitForMessage);
101 100
102 // These methods should be called if the holder of the thread is 101 // These methods should be called if the holder of the thread is
103 // going to call runDebuggerTask in a loop. 102 // going to call runDebuggerTask in a loop.
104 void willEnterNestedLoop(); 103 void willEnterNestedLoop();
105 void didLeaveNestedLoop(); 104 void didLeaveNestedLoop();
106 105
107 WorkerGlobalScope* workerGlobalScope() const { return m_workerGlobalScope.ge t(); } 106 WorkerGlobalScope* workerGlobalScope() const { return m_workerGlobalScope.ge t(); }
(...skipping 26 matching lines...) Expand all
134 private: 133 private:
135 friend class WorkerSharedTimer; 134 friend class WorkerSharedTimer;
136 friend class WorkerMicrotaskRunner; 135 friend class WorkerMicrotaskRunner;
137 136
138 void stopInShutdownSequence(); 137 void stopInShutdownSequence();
139 void stopInternal(); 138 void stopInternal();
140 139
141 void initialize(PassOwnPtr<WorkerThreadStartupData>); 140 void initialize(PassOwnPtr<WorkerThreadStartupData>);
142 void shutdown(); 141 void shutdown();
143 void performIdleWork(double deadlineSeconds); 142 void performIdleWork(double deadlineSeconds);
144 void postDelayedTask(PassOwnPtr<ExecutionContextTask>, long long delayMs);
145 void postDelayedTask(const WebTraceLocation&, PassOwnPtr<ExecutionContextTas k>, long long delayMs); 143 void postDelayedTask(const WebTraceLocation&, PassOwnPtr<ExecutionContextTas k>, long long delayMs);
146 144
147 bool m_started; 145 bool m_started;
148 bool m_terminated; 146 bool m_terminated;
149 bool m_shutdown; 147 bool m_shutdown;
150 MessageQueue<WorkerThreadTask> m_debuggerMessageQueue; 148 MessageQueue<WebThread::Task> m_debuggerMessageQueue;
151 OwnPtr<WebThread::TaskObserver> m_microtaskRunner; 149 OwnPtr<WebThread::TaskObserver> m_microtaskRunner;
152 150
153 RefPtr<WorkerLoaderProxy> m_workerLoaderProxy; 151 RefPtr<WorkerLoaderProxy> m_workerLoaderProxy;
154 WorkerReportingProxy& m_workerReportingProxy; 152 WorkerReportingProxy& m_workerReportingProxy;
155 RawPtr<WebScheduler> m_webScheduler; // Not owned. 153 RawPtr<WebScheduler> m_webScheduler; // Not owned.
156 154
157 RefPtrWillBePersistent<WorkerInspectorController> m_workerInspectorControlle r; 155 RefPtrWillBePersistent<WorkerInspectorController> m_workerInspectorControlle r;
158 Mutex m_workerInspectorControllerMutex; 156 Mutex m_workerInspectorControllerMutex;
159 157
160 // This lock protects |m_workerGlobalScope|, |m_terminated|, |m_isolate| and |m_microtaskRunner|. 158 // This lock protects |m_workerGlobalScope|, |m_terminated|, |m_isolate| and |m_microtaskRunner|.
161 Mutex m_threadStateMutex; 159 Mutex m_threadStateMutex;
162 160
163 RefPtrWillBePersistent<WorkerGlobalScope> m_workerGlobalScope; 161 RefPtrWillBePersistent<WorkerGlobalScope> m_workerGlobalScope;
164 162
165 v8::Isolate* m_isolate; 163 v8::Isolate* m_isolate;
166 OwnPtr<V8IsolateInterruptor> m_interruptor; 164 OwnPtr<V8IsolateInterruptor> m_interruptor;
167 165
168 // Used to signal thread shutdown. 166 // Used to signal thread shutdown.
169 OwnPtr<WebWaitableEvent> m_shutdownEvent; 167 OwnPtr<WebWaitableEvent> m_shutdownEvent;
170 168
171 // Used to signal thread termination. 169 // Used to signal thread termination.
172 OwnPtr<WebWaitableEvent> m_terminationEvent; 170 OwnPtr<WebWaitableEvent> m_terminationEvent;
173 }; 171 };
174 172
175 } // namespace blink 173 } // namespace blink
176 174
177 #endif // WorkerThread_h 175 #endif // WorkerThread_h
OLDNEW
« no previous file with comments | « Source/core/workers/WorkerInspectorProxy.cpp ('k') | Source/core/workers/WorkerThread.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698