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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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) \ | 61 #define REQUIRE_THREADSAFE_HANDLES(Class) \ |
62 class Class; \ | 62 class Class; \ |
63 template<> struct ThreadingTrait<Class> { \ | 63 template<> struct ThreadingTrait<Class> { \ |
64 static const ThreadAffinity Affinity = AnyThread; \ | 64 static const ThreadAffinity Affinity = AnyThread; \ |
65 } | 65 } |
66 | 66 |
67 #define REQUIRE_THREADSAFE_HANDLES_NS(Namespace, Class) \ | 67 #define REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(Namespace, Class) \ |
68 namespace Namespace { \ | 68 namespace Namespace { \ |
69 class Class; \ | 69 class Class; \ |
70 } \ | 70 } \ |
71 namespace WebCore { \ | 71 namespace WebCore { \ |
72 template<> struct ThreadingTrait<Namespace::Class> { \ | 72 template<> struct ThreadingTrait<Namespace::Class> { \ |
73 static const ThreadAffinity Affinity = AnyThread; \ | 73 static const ThreadAffinity Affinity = AnyThread; \ |
74 }; \ | 74 }; \ |
75 } | 75 } |
76 | 76 |
77 | |
78 template<typename U> class ThreadingTrait<const U> : public ThreadingTrait<U> {
}; | 77 template<typename U> class ThreadingTrait<const U> : public ThreadingTrait<U> {
}; |
79 | 78 |
80 class HeapObjectHeader; | 79 class HeapObjectHeader; |
81 class FinalizedHeapObjectHeader; | 80 class FinalizedHeapObjectHeader; |
82 template<typename Header> class ThreadHeap; | 81 template<typename Header> class ThreadHeap; |
83 | 82 |
84 // To create a new typed heap add a H(<ClassName>) to the for FOR_EACH_TYPED_HEA
P macro below. | 83 // To create a new typed heap add a H(<ClassName>) to the for FOR_EACH_TYPED_HEA
P macro below. |
85 #define FOR_EACH_TYPED_HEAP(H) \ | 84 #define FOR_EACH_TYPED_HEAP(H) \ |
86 H(Node) | 85 H(Node) |
87 | 86 |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
318 public: | 317 public: |
319 static ThreadState* State() { return ThreadState::MainThreadState(); } | 318 static ThreadState* State() { return ThreadState::MainThreadState(); } |
320 }; | 319 }; |
321 | 320 |
322 template<> class ThreadStateFor<AnyThread> { | 321 template<> class ThreadStateFor<AnyThread> { |
323 public: | 322 public: |
324 static ThreadState* State() { return ThreadState::Current(); } | 323 static ThreadState* State() { return ThreadState::Current(); } |
325 }; | 324 }; |
326 | 325 |
327 // FIXME(oilpan): find a better place for this. | 326 // FIXME(oilpan): find a better place for this. |
328 REQUIRE_THREADSAFE_HANDLES(ScriptExecutionContext); | 327 REQUIRE_THREADSAFE_HANDLES(Blob); |
| 328 REQUIRE_THREADSAFE_HANDLES(DOMCoreException); |
| 329 REQUIRE_THREADSAFE_HANDLES(DOMFileSystem); |
| 330 REQUIRE_THREADSAFE_HANDLES(DOMFileSystemSync); |
| 331 REQUIRE_THREADSAFE_HANDLES(DOMURL); |
| 332 REQUIRE_THREADSAFE_HANDLES(DataView); |
| 333 REQUIRE_THREADSAFE_HANDLES(DedicatedWorkerContext); |
| 334 REQUIRE_THREADSAFE_HANDLES(DirectoryEntry); |
| 335 REQUIRE_THREADSAFE_HANDLES(DirectoryEntrySync); |
| 336 REQUIRE_THREADSAFE_HANDLES(DirectoryReder); |
| 337 REQUIRE_THREADSAFE_HANDLES(DirectoryRederSync); |
329 REQUIRE_THREADSAFE_HANDLES(Document); | 338 REQUIRE_THREADSAFE_HANDLES(Document); |
330 REQUIRE_THREADSAFE_HANDLES(WorkerContext); | 339 REQUIRE_THREADSAFE_HANDLES(Entry); |
331 REQUIRE_THREADSAFE_HANDLES(DedicatedWorkerContext); | 340 REQUIRE_THREADSAFE_HANDLES(EntryArray); |
332 REQUIRE_THREADSAFE_HANDLES(SharedWorkerContext); | 341 REQUIRE_THREADSAFE_HANDLES(EntryArraySync); |
| 342 REQUIRE_THREADSAFE_HANDLES(EntrySync); |
| 343 REQUIRE_THREADSAFE_HANDLES(Event); |
| 344 REQUIRE_THREADSAFE_HANDLES(EventSource); |
333 REQUIRE_THREADSAFE_HANDLES(EventTarget); | 345 REQUIRE_THREADSAFE_HANDLES(EventTarget); |
334 REQUIRE_THREADSAFE_HANDLES(MessagePort); | 346 REQUIRE_THREADSAFE_HANDLES(File); |
| 347 REQUIRE_THREADSAFE_HANDLES(FileEntry); |
| 348 REQUIRE_THREADSAFE_HANDLES(FileEntrySync); |
| 349 REQUIRE_THREADSAFE_HANDLES(FileError); |
| 350 REQUIRE_THREADSAFE_HANDLES(FileException); |
335 REQUIRE_THREADSAFE_HANDLES(FileReader); | 351 REQUIRE_THREADSAFE_HANDLES(FileReader); |
336 REQUIRE_THREADSAFE_HANDLES(FileReaderSync); | 352 REQUIRE_THREADSAFE_HANDLES(FileReaderSync); |
337 REQUIRE_THREADSAFE_HANDLES(ProgressEvent); | 353 REQUIRE_THREADSAFE_HANDLES(FileWriter); |
338 REQUIRE_THREADSAFE_HANDLES(Event); | |
339 REQUIRE_THREADSAFE_HANDLES(FileError); | |
340 REQUIRE_THREADSAFE_HANDLES(FileException); | |
341 REQUIRE_THREADSAFE_HANDLES(DataView); | |
342 REQUIRE_THREADSAFE_HANDLES(DOMCoreException); | |
343 REQUIRE_THREADSAFE_HANDLES(DOMURL); | |
344 REQUIRE_THREADSAFE_HANDLES(XMLHttpRequest); | |
345 REQUIRE_THREADSAFE_HANDLES(XMLHttpRequestException); | |
346 REQUIRE_THREADSAFE_HANDLES(Blob); | |
347 REQUIRE_THREADSAFE_HANDLES(DOMFileSystem); | |
348 REQUIRE_THREADSAFE_HANDLES(Entry); | |
349 REQUIRE_THREADSAFE_HANDLES(FileEntry); | |
350 REQUIRE_THREADSAFE_HANDLES(DirectoryEntry); | |
351 REQUIRE_THREADSAFE_HANDLES(DirectoryReder); | |
352 REQUIRE_THREADSAFE_HANDLES(DOMFileSystemSync); | |
353 REQUIRE_THREADSAFE_HANDLES(EntrySync); | |
354 REQUIRE_THREADSAFE_HANDLES(FileEntrySync); | |
355 REQUIRE_THREADSAFE_HANDLES(DirectoryEntrySync); | |
356 REQUIRE_THREADSAFE_HANDLES(DirectoryRederSync); | |
357 REQUIRE_THREADSAFE_HANDLES(EntryArray); | |
358 REQUIRE_THREADSAFE_HANDLES(EntryArraySync); | |
359 REQUIRE_THREADSAFE_HANDLES(FileWriterBase); | 354 REQUIRE_THREADSAFE_HANDLES(FileWriterBase); |
360 REQUIRE_THREADSAFE_HANDLES(FileWriter); | |
361 REQUIRE_THREADSAFE_HANDLES(FileWriterSync); | 355 REQUIRE_THREADSAFE_HANDLES(FileWriterSync); |
362 REQUIRE_THREADSAFE_HANDLES(File); | |
363 REQUIRE_THREADSAFE_HANDLES(WebSocket); | |
364 REQUIRE_THREADSAFE_HANDLES(EventSource); | |
365 | |
366 REQUIRE_THREADSAFE_HANDLES(IDBAny); | 356 REQUIRE_THREADSAFE_HANDLES(IDBAny); |
367 REQUIRE_THREADSAFE_HANDLES(IDBCallbacks); | 357 REQUIRE_THREADSAFE_HANDLES(IDBCallbacks); |
368 REQUIRE_THREADSAFE_HANDLES(IDBCursor); | 358 REQUIRE_THREADSAFE_HANDLES(IDBCursor); |
369 REQUIRE_THREADSAFE_HANDLES(IDBCursorWithValue); | 359 REQUIRE_THREADSAFE_HANDLES(IDBCursorWithValue); |
370 REQUIRE_THREADSAFE_HANDLES(IDBDatabase); | 360 REQUIRE_THREADSAFE_HANDLES(IDBDatabase); |
| 361 REQUIRE_THREADSAFE_HANDLES(IDBDatabaseBackendImpl); |
| 362 REQUIRE_THREADSAFE_HANDLES(IDBDatabaseBackendInterface); |
| 363 REQUIRE_THREADSAFE_HANDLES(IDBDatabaseCallbacks); |
| 364 REQUIRE_THREADSAFE_HANDLES(IDBDatabaseCallbacksImpl); |
371 REQUIRE_THREADSAFE_HANDLES(IDBFactory); | 365 REQUIRE_THREADSAFE_HANDLES(IDBFactory); |
372 REQUIRE_THREADSAFE_HANDLES(IDBFactoryBackendImpl); | 366 REQUIRE_THREADSAFE_HANDLES(IDBFactoryBackendImpl); |
373 REQUIRE_THREADSAFE_HANDLES(IDBFactoryBackendInterface); | 367 REQUIRE_THREADSAFE_HANDLES(IDBFactoryBackendInterface); |
374 REQUIRE_THREADSAFE_HANDLES(IDBIndex); | 368 REQUIRE_THREADSAFE_HANDLES(IDBIndex); |
375 REQUIRE_THREADSAFE_HANDLES(IDBKeyRange); | 369 REQUIRE_THREADSAFE_HANDLES(IDBKeyRange); |
376 REQUIRE_THREADSAFE_HANDLES(IDBObjectStore); | 370 REQUIRE_THREADSAFE_HANDLES(IDBObjectStore); |
377 REQUIRE_THREADSAFE_HANDLES(IDBOpenDBRequest); | 371 REQUIRE_THREADSAFE_HANDLES(IDBOpenDBRequest); |
| 372 REQUIRE_THREADSAFE_HANDLES(IDBRequest); |
378 REQUIRE_THREADSAFE_HANDLES(IDBTransaction); | 373 REQUIRE_THREADSAFE_HANDLES(IDBTransaction); |
379 REQUIRE_THREADSAFE_HANDLES(IDBVersionChangeEvent); | 374 REQUIRE_THREADSAFE_HANDLES(IDBVersionChangeEvent); |
380 REQUIRE_THREADSAFE_HANDLES(IDBRequest); | 375 REQUIRE_THREADSAFE_HANDLES(MessagePort); |
| 376 REQUIRE_THREADSAFE_HANDLES(ProgressEvent); |
| 377 REQUIRE_THREADSAFE_HANDLES(ScriptExecutionContext); |
| 378 REQUIRE_THREADSAFE_HANDLES(SharedWorkerContext); |
| 379 REQUIRE_THREADSAFE_HANDLES(WebSocket); |
| 380 REQUIRE_THREADSAFE_HANDLES(WorkerContext); |
| 381 REQUIRE_THREADSAFE_HANDLES(XMLHttpRequest); |
| 382 REQUIRE_THREADSAFE_HANDLES(XMLHttpRequestException); |
381 | 383 |
382 } | 384 } |
383 | 385 |
384 REQUIRE_THREADSAFE_HANDLES_NS(WTF, ArrayBuffer); | 386 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WTF, ArrayBuffer); |
385 REQUIRE_THREADSAFE_HANDLES_NS(WTF, ArrayBufferView); | 387 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WTF, ArrayBufferView); |
386 REQUIRE_THREADSAFE_HANDLES_NS(WTF, Int8Array); | 388 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WTF, Int8Array); |
387 REQUIRE_THREADSAFE_HANDLES_NS(WTF, Uint8ClampedArray); | 389 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WTF, Uint8ClampedArray); |
388 REQUIRE_THREADSAFE_HANDLES_NS(WTF, Uint8Array); | 390 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WTF, Uint8Array); |
389 REQUIRE_THREADSAFE_HANDLES_NS(WTF, Int16Array); | 391 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WTF, Int16Array); |
390 REQUIRE_THREADSAFE_HANDLES_NS(WTF, Uint16Array); | 392 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WTF, Uint16Array); |
391 REQUIRE_THREADSAFE_HANDLES_NS(WTF, Int32Array); | 393 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WTF, Int32Array); |
392 REQUIRE_THREADSAFE_HANDLES_NS(WTF, Uint32Array); | 394 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WTF, Uint32Array); |
393 REQUIRE_THREADSAFE_HANDLES_NS(WTF, Float32Array); | 395 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WTF, Float32Array); |
394 REQUIRE_THREADSAFE_HANDLES_NS(WTF, Float64Array); | 396 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WTF, Float64Array); |
| 397 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WebKit, IDBCallbacksProxy); |
| 398 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WebKit, IDBDatabaseBackendProxy); |
| 399 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WebKit, IDBDatabaseCallbacksProxy); |
| 400 REQUIRE_THREADSAFE_HANDLES_WITH_NAMESPACE(WebKit, IDBFactoryBackendProxy); |
395 | 401 |
396 #endif | 402 #endif |
OLD | NEW |