OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 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 are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
53 template<typename T> | 53 template<typename T> |
54 struct ThreadingTrait { | 54 struct ThreadingTrait { |
55 static const ThreadAffinity Affinity = MainThreadOnly; | 55 static const ThreadAffinity Affinity = MainThreadOnly; |
56 }; | 56 }; |
57 | 57 |
58 // Marks specified class as requiring thread safe handles which can be used from any thread. | 58 // Marks specified class as requiring thread safe handles which can be used from any thread. |
59 // Notice that marking base class does not automatically mark its descendants an d they | 59 // Notice that marking base class does not automatically mark its descendants an d they |
60 // have to be explicitly marked. | 60 // have to be explicitly marked. |
61 #define REQUIRE_THREADSAFE_HANDLES(Class) template<> struct ThreadingTrait<class Class> { static const ThreadAffinity Affinity = AnyThread; } | 61 #define REQUIRE_THREADSAFE_HANDLES(Class) template<> struct ThreadingTrait<class Class> { static const ThreadAffinity Affinity = AnyThread; } |
62 | 62 |
63 #define REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(Namespace, Class) \ | |
64 namespace Namespace { class Class; } \ | |
65 namespace WebCore { \ | |
66 template<> struct ThreadingTrait<Namespace::Class> { \ | |
67 static const ThreadAffinity Affinity = AnyThread; \ | |
68 }; \ | |
69 } | |
70 | |
63 template<typename U> class ThreadingTrait<const U> : public ThreadingTrait<U> { }; | 71 template<typename U> class ThreadingTrait<const U> : public ThreadingTrait<U> { }; |
64 | 72 |
65 class HeapObjectHeader; | 73 class HeapObjectHeader; |
66 class FinalizedHeapObjectHeader; | 74 class FinalizedHeapObjectHeader; |
67 template<typename Header> class ThreadHeap; | 75 template<typename Header> class ThreadHeap; |
68 | 76 |
69 // To create a new typed heap add a H(<ClassName>) to the for FOR_EACH_TYPED_HEA P macro below. | 77 // To create a new typed heap add a H(<ClassName>) to the for FOR_EACH_TYPED_HEA P macro below. |
70 #define FOR_EACH_TYPED_HEAP(H) \ | 78 #define FOR_EACH_TYPED_HEAP(H) \ |
71 H(Node) | 79 H(Node) |
72 | 80 |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
304 public: | 312 public: |
305 static ThreadState* State() { return ThreadState::MainThreadState(); } | 313 static ThreadState* State() { return ThreadState::MainThreadState(); } |
306 }; | 314 }; |
307 | 315 |
308 template<> class ThreadStateFor<AnyThread> { | 316 template<> class ThreadStateFor<AnyThread> { |
309 public: | 317 public: |
310 static ThreadState* State() { return ThreadState::Current(); } | 318 static ThreadState* State() { return ThreadState::Current(); } |
311 }; | 319 }; |
312 | 320 |
313 // FIXME(oilpan): find a better place for this. | 321 // FIXME(oilpan): find a better place for this. |
314 REQUIRE_THREADSAFE_HANDLES(ScriptExecutionContext); | 322 REQUIRE_THREADSAFE_HANDLES(ArrayBuffer); |
323 REQUIRE_THREADSAFE_HANDLES(ArrayBufferView); | |
324 REQUIRE_THREADSAFE_HANDLES(Blob); | |
325 REQUIRE_THREADSAFE_HANDLES(DOMCoreException); | |
326 REQUIRE_THREADSAFE_HANDLES(DOMFileSystem); | |
327 REQUIRE_THREADSAFE_HANDLES(DOMFileSystemSync); | |
328 REQUIRE_THREADSAFE_HANDLES(DOMURL); | |
329 REQUIRE_THREADSAFE_HANDLES(DataView); | |
330 REQUIRE_THREADSAFE_HANDLES(DedicatedWorkerContext); | |
331 REQUIRE_THREADSAFE_HANDLES(DirectoryEntry); | |
332 REQUIRE_THREADSAFE_HANDLES(DirectoryEntrySync); | |
333 REQUIRE_THREADSAFE_HANDLES(DirectoryReder); | |
334 REQUIRE_THREADSAFE_HANDLES(DirectoryRederSync); | |
315 REQUIRE_THREADSAFE_HANDLES(Document); | 335 REQUIRE_THREADSAFE_HANDLES(Document); |
316 REQUIRE_THREADSAFE_HANDLES(WorkerContext); | 336 REQUIRE_THREADSAFE_HANDLES(Entry); |
317 REQUIRE_THREADSAFE_HANDLES(DedicatedWorkerContext); | 337 REQUIRE_THREADSAFE_HANDLES(EntryArray); |
318 REQUIRE_THREADSAFE_HANDLES(SharedWorkerContext); | 338 REQUIRE_THREADSAFE_HANDLES(EntryArraySync); |
339 REQUIRE_THREADSAFE_HANDLES(EntrySync); | |
340 REQUIRE_THREADSAFE_HANDLES(Event); | |
341 REQUIRE_THREADSAFE_HANDLES(EventSource); | |
319 REQUIRE_THREADSAFE_HANDLES(EventTarget); | 342 REQUIRE_THREADSAFE_HANDLES(EventTarget); |
320 REQUIRE_THREADSAFE_HANDLES(MessagePort); | 343 REQUIRE_THREADSAFE_HANDLES(File); |
344 REQUIRE_THREADSAFE_HANDLES(FileEntry); | |
345 REQUIRE_THREADSAFE_HANDLES(FileEntrySync); | |
346 REQUIRE_THREADSAFE_HANDLES(FileError); | |
347 REQUIRE_THREADSAFE_HANDLES(FileException); | |
321 REQUIRE_THREADSAFE_HANDLES(FileReader); | 348 REQUIRE_THREADSAFE_HANDLES(FileReader); |
322 REQUIRE_THREADSAFE_HANDLES(FileReaderSync); | 349 REQUIRE_THREADSAFE_HANDLES(FileReaderSync); |
323 REQUIRE_THREADSAFE_HANDLES(ProgressEvent); | 350 REQUIRE_THREADSAFE_HANDLES(FileWriter); |
324 REQUIRE_THREADSAFE_HANDLES(Event); | 351 REQUIRE_THREADSAFE_HANDLES(FileWriterBase); |
325 REQUIRE_THREADSAFE_HANDLES(FileError); | 352 REQUIRE_THREADSAFE_HANDLES(FileWriterSync); |
326 REQUIRE_THREADSAFE_HANDLES(FileException); | |
327 REQUIRE_THREADSAFE_HANDLES(Int8Array); | |
328 REQUIRE_THREADSAFE_HANDLES(Uint8ClampedArray); | |
329 REQUIRE_THREADSAFE_HANDLES(Uint8Array); | |
330 REQUIRE_THREADSAFE_HANDLES(Int16Array); | |
331 REQUIRE_THREADSAFE_HANDLES(Uint16Array); | |
332 REQUIRE_THREADSAFE_HANDLES(Int32Array); | |
333 REQUIRE_THREADSAFE_HANDLES(Uint32Array); | |
334 REQUIRE_THREADSAFE_HANDLES(Float32Array); | 353 REQUIRE_THREADSAFE_HANDLES(Float32Array); |
335 REQUIRE_THREADSAFE_HANDLES(Float64Array); | 354 REQUIRE_THREADSAFE_HANDLES(Float64Array); |
336 REQUIRE_THREADSAFE_HANDLES(ArrayBuffer); | |
337 REQUIRE_THREADSAFE_HANDLES(ArrayBufferView); | |
338 REQUIRE_THREADSAFE_HANDLES(DataView); | |
339 REQUIRE_THREADSAFE_HANDLES(DOMCoreException); | |
340 REQUIRE_THREADSAFE_HANDLES(DOMURL); | |
341 REQUIRE_THREADSAFE_HANDLES(XMLHttpRequest); | |
342 REQUIRE_THREADSAFE_HANDLES(XMLHttpRequestException); | |
343 REQUIRE_THREADSAFE_HANDLES(Blob); | |
344 REQUIRE_THREADSAFE_HANDLES(DOMFileSystem); | |
345 REQUIRE_THREADSAFE_HANDLES(Entry); | |
346 REQUIRE_THREADSAFE_HANDLES(FileEntry); | |
347 REQUIRE_THREADSAFE_HANDLES(DirectoryEntry); | |
348 REQUIRE_THREADSAFE_HANDLES(DirectoryReder); | |
349 REQUIRE_THREADSAFE_HANDLES(DOMFileSystemSync); | |
350 REQUIRE_THREADSAFE_HANDLES(EntrySync); | |
351 REQUIRE_THREADSAFE_HANDLES(FileEntrySync); | |
352 REQUIRE_THREADSAFE_HANDLES(DirectoryEntrySync); | |
353 REQUIRE_THREADSAFE_HANDLES(DirectoryRederSync); | |
354 REQUIRE_THREADSAFE_HANDLES(EntryArray); | |
355 REQUIRE_THREADSAFE_HANDLES(EntryArraySync); | |
356 REQUIRE_THREADSAFE_HANDLES(FileWriterBase); | |
357 REQUIRE_THREADSAFE_HANDLES(FileWriter); | |
358 REQUIRE_THREADSAFE_HANDLES(FileWriterSync); | |
359 REQUIRE_THREADSAFE_HANDLES(File); | |
360 REQUIRE_THREADSAFE_HANDLES(WebSocket); | |
361 REQUIRE_THREADSAFE_HANDLES(EventSource); | |
362 | |
363 REQUIRE_THREADSAFE_HANDLES(IDBAny); | 355 REQUIRE_THREADSAFE_HANDLES(IDBAny); |
364 REQUIRE_THREADSAFE_HANDLES(IDBCallbacks); | 356 REQUIRE_THREADSAFE_HANDLES(IDBCallbacks); |
365 REQUIRE_THREADSAFE_HANDLES(IDBCursor); | 357 REQUIRE_THREADSAFE_HANDLES(IDBCursor); |
366 REQUIRE_THREADSAFE_HANDLES(IDBCursorWithValue); | 358 REQUIRE_THREADSAFE_HANDLES(IDBCursorWithValue); |
367 REQUIRE_THREADSAFE_HANDLES(IDBDatabase); | 359 REQUIRE_THREADSAFE_HANDLES(IDBDatabase); |
360 REQUIRE_THREADSAFE_HANDLES(IDBDatabaseBackendImpl); | |
361 REQUIRE_THREADSAFE_HANDLES(IDBDatabaseBackendInterface); | |
362 REQUIRE_THREADSAFE_HANDLES(IDBDatabaseCallbacks); | |
363 REQUIRE_THREADSAFE_HANDLES(IDBDatabaseCallbacksImpl); | |
368 REQUIRE_THREADSAFE_HANDLES(IDBFactory); | 364 REQUIRE_THREADSAFE_HANDLES(IDBFactory); |
369 REQUIRE_THREADSAFE_HANDLES(IDBFactoryBackendImpl); | 365 REQUIRE_THREADSAFE_HANDLES(IDBFactoryBackendImpl); |
370 REQUIRE_THREADSAFE_HANDLES(IDBFactoryBackendInterface); | 366 REQUIRE_THREADSAFE_HANDLES(IDBFactoryBackendInterface); |
371 REQUIRE_THREADSAFE_HANDLES(IDBIndex); | 367 REQUIRE_THREADSAFE_HANDLES(IDBIndex); |
372 REQUIRE_THREADSAFE_HANDLES(IDBKeyRange); | 368 REQUIRE_THREADSAFE_HANDLES(IDBKeyRange); |
373 REQUIRE_THREADSAFE_HANDLES(IDBObjectStore); | 369 REQUIRE_THREADSAFE_HANDLES(IDBObjectStore); |
374 REQUIRE_THREADSAFE_HANDLES(IDBOpenDBRequest); | 370 REQUIRE_THREADSAFE_HANDLES(IDBOpenDBRequest); |
371 REQUIRE_THREADSAFE_HANDLES(IDBRequest); | |
375 REQUIRE_THREADSAFE_HANDLES(IDBTransaction); | 372 REQUIRE_THREADSAFE_HANDLES(IDBTransaction); |
376 REQUIRE_THREADSAFE_HANDLES(IDBVersionChangeEvent); | 373 REQUIRE_THREADSAFE_HANDLES(IDBVersionChangeEvent); |
377 REQUIRE_THREADSAFE_HANDLES(IDBRequest); | 374 REQUIRE_THREADSAFE_HANDLES(Int16Array); |
375 REQUIRE_THREADSAFE_HANDLES(Int32Array); | |
376 REQUIRE_THREADSAFE_HANDLES(Int8Array); | |
377 REQUIRE_THREADSAFE_HANDLES(MessagePort); | |
378 REQUIRE_THREADSAFE_HANDLES(ProgressEvent); | |
379 REQUIRE_THREADSAFE_HANDLES(ScriptExecutionContext); | |
380 REQUIRE_THREADSAFE_HANDLES(SharedWorkerContext); | |
381 REQUIRE_THREADSAFE_HANDLES(Uint16Array); | |
382 REQUIRE_THREADSAFE_HANDLES(Uint32Array); | |
383 REQUIRE_THREADSAFE_HANDLES(Uint8Array); | |
384 REQUIRE_THREADSAFE_HANDLES(Uint8ClampedArray); | |
385 REQUIRE_THREADSAFE_HANDLES(WebSocket); | |
386 REQUIRE_THREADSAFE_HANDLES(WorkerContext); | |
387 REQUIRE_THREADSAFE_HANDLES(XMLHttpRequest); | |
388 REQUIRE_THREADSAFE_HANDLES(XMLHttpRequestException); | |
378 | 389 |
379 } | 390 } |
380 | 391 |
392 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WebKit, IDBCallbacksProxy); | |
Mads Ager (chromium)
2013/11/28 10:24:46
Everything above is just sorting, right?
haraken
2013/12/02 09:13:27
Yes.
| |
393 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WebKit, IDBDatabaseBackendProxy); | |
394 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WebKit, IDBDatabaseCallbacksProxy); | |
395 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WebKit, IDBFactoryBackendProxy); | |
396 | |
381 #endif | 397 #endif |
OLD | NEW |