Chromium Code Reviews| 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 |