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

Side by Side Diff: Source/core/dom/CrossThreadTask.h

Issue 267323004: Oilpan: Move ThreadableWebSocketChannelClientWrapper to Oilpan's heap (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 6 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 | « no previous file | Source/modules/websockets/ThreadableWebSocketChannelClientWrapper.h » ('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) 2009-2010 Google Inc. All rights reserved. 2 * Copyright (C) 2009-2010 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 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 }; 50 };
51 51
52 template<typename T> struct CrossThreadTaskTraits<PassRefPtr<T> > { 52 template<typename T> struct CrossThreadTaskTraits<PassRefPtr<T> > {
53 typedef PassRefPtr<T> ParamType; 53 typedef PassRefPtr<T> ParamType;
54 }; 54 };
55 55
56 template<typename T> struct CrossThreadTaskTraits<PassOwnPtr<T> > { 56 template<typename T> struct CrossThreadTaskTraits<PassOwnPtr<T> > {
57 typedef PassOwnPtr<T> ParamType; 57 typedef PassOwnPtr<T> ParamType;
58 }; 58 };
59 59
60 // FIXME: Oilpan: Using a RawPtr is not safe.
61 // We need to move ExecutionContextTask to the heap and make this a Member.
62 template<typename T> struct CrossThreadTaskTraits<RawPtr<T> > {
63 typedef RawPtr<T> ParamType;
64 };
65
60 template<typename P1, typename MP1> 66 template<typename P1, typename MP1>
61 class CrossThreadTask1 : public ExecutionContextTask { 67 class GC_PLUGIN_IGNORE("crbug.com/378192") CrossThreadTask1 : public ExecutionCo ntextTask {
62 public: 68 public:
63 typedef void (*Method)(ExecutionContext*, MP1); 69 typedef void (*Method)(ExecutionContext*, MP1);
64 typedef CrossThreadTask1<P1, MP1> CrossThreadTask; 70 typedef CrossThreadTask1<P1, MP1> CrossThreadTask;
65 typedef typename CrossThreadTaskTraits<P1>::ParamType Param1; 71 typedef typename CrossThreadTaskTraits<P1>::ParamType Param1;
66 72
67 static PassOwnPtr<CrossThreadTask> create(Method method, Param1 parameter1) 73 static PassOwnPtr<CrossThreadTask> create(Method method, Param1 parameter1)
68 { 74 {
69 return adoptPtr(new CrossThreadTask(method, parameter1)); 75 return adoptPtr(new CrossThreadTask(method, parameter1));
70 } 76 }
71 77
72 private: 78 private:
73 CrossThreadTask1(Method method, Param1 parameter1) 79 CrossThreadTask1(Method method, Param1 parameter1)
74 : m_method(method) 80 : m_method(method)
75 , m_parameter1(parameter1) 81 , m_parameter1(parameter1)
76 { 82 {
77 } 83 }
78 84
79 virtual void performTask(ExecutionContext* context) 85 virtual void performTask(ExecutionContext* context)
80 { 86 {
81 (*m_method)(context, m_parameter1); 87 (*m_method)(context, m_parameter1);
82 } 88 }
83 89
84 private: 90 private:
85 Method m_method; 91 Method m_method;
86 P1 m_parameter1; 92 P1 m_parameter1;
87 }; 93 };
88 94
89 template<typename P1, typename MP1, typename P2, typename MP2> 95 template<typename P1, typename MP1, typename P2, typename MP2>
90 class CrossThreadTask2 : public ExecutionContextTask { 96 class GC_PLUGIN_IGNORE("crbug.com/378192") CrossThreadTask2 : public ExecutionCo ntextTask {
91 public: 97 public:
92 typedef void (*Method)(ExecutionContext*, MP1, MP2); 98 typedef void (*Method)(ExecutionContext*, MP1, MP2);
93 typedef CrossThreadTask2<P1, MP1, P2, MP2> CrossThreadTask; 99 typedef CrossThreadTask2<P1, MP1, P2, MP2> CrossThreadTask;
94 typedef typename CrossThreadTaskTraits<P1>::ParamType Param1; 100 typedef typename CrossThreadTaskTraits<P1>::ParamType Param1;
95 typedef typename CrossThreadTaskTraits<P2>::ParamType Param2; 101 typedef typename CrossThreadTaskTraits<P2>::ParamType Param2;
96 102
97 static PassOwnPtr<CrossThreadTask> create(Method method, Param1 parameter1, Param2 parameter2) 103 static PassOwnPtr<CrossThreadTask> create(Method method, Param1 parameter1, Param2 parameter2)
98 { 104 {
99 return adoptPtr(new CrossThreadTask(method, parameter1, parameter2)); 105 return adoptPtr(new CrossThreadTask(method, parameter1, parameter2));
100 } 106 }
(...skipping 11 matching lines...) Expand all
112 (*m_method)(context, m_parameter1, m_parameter2); 118 (*m_method)(context, m_parameter1, m_parameter2);
113 } 119 }
114 120
115 private: 121 private:
116 Method m_method; 122 Method m_method;
117 P1 m_parameter1; 123 P1 m_parameter1;
118 P2 m_parameter2; 124 P2 m_parameter2;
119 }; 125 };
120 126
121 template<typename P1, typename MP1, typename P2, typename MP2, typename P3, type name MP3> 127 template<typename P1, typename MP1, typename P2, typename MP2, typename P3, type name MP3>
122 class CrossThreadTask3 : public ExecutionContextTask { 128 class GC_PLUGIN_IGNORE("crbug.com/378192") CrossThreadTask3 : public ExecutionCo ntextTask {
123 public: 129 public:
124 typedef void (*Method)(ExecutionContext*, MP1, MP2, MP3); 130 typedef void (*Method)(ExecutionContext*, MP1, MP2, MP3);
125 typedef CrossThreadTask3<P1, MP1, P2, MP2, P3, MP3> CrossThreadTask; 131 typedef CrossThreadTask3<P1, MP1, P2, MP2, P3, MP3> CrossThreadTask;
126 typedef typename CrossThreadTaskTraits<P1>::ParamType Param1; 132 typedef typename CrossThreadTaskTraits<P1>::ParamType Param1;
127 typedef typename CrossThreadTaskTraits<P2>::ParamType Param2; 133 typedef typename CrossThreadTaskTraits<P2>::ParamType Param2;
128 typedef typename CrossThreadTaskTraits<P3>::ParamType Param3; 134 typedef typename CrossThreadTaskTraits<P3>::ParamType Param3;
129 135
130 static PassOwnPtr<CrossThreadTask> create(Method method, Param1 parameter1, Param2 parameter2, Param3 parameter3) 136 static PassOwnPtr<CrossThreadTask> create(Method method, Param1 parameter1, Param2 parameter2, Param3 parameter3)
131 { 137 {
132 return adoptPtr(new CrossThreadTask(method, parameter1, parameter2, para meter3)); 138 return adoptPtr(new CrossThreadTask(method, parameter1, parameter2, para meter3));
(...skipping 14 matching lines...) Expand all
147 } 153 }
148 154
149 private: 155 private:
150 Method m_method; 156 Method m_method;
151 P1 m_parameter1; 157 P1 m_parameter1;
152 P2 m_parameter2; 158 P2 m_parameter2;
153 P3 m_parameter3; 159 P3 m_parameter3;
154 }; 160 };
155 161
156 template<typename P1, typename MP1, typename P2, typename MP2, typename P3, type name MP3, typename P4, typename MP4> 162 template<typename P1, typename MP1, typename P2, typename MP2, typename P3, type name MP3, typename P4, typename MP4>
157 class CrossThreadTask4 : public ExecutionContextTask { 163 class GC_PLUGIN_IGNORE("crbug.com/378192") CrossThreadTask4 : public ExecutionCo ntextTask {
158 public: 164 public:
159 typedef void (*Method)(ExecutionContext*, MP1, MP2, MP3, MP4); 165 typedef void (*Method)(ExecutionContext*, MP1, MP2, MP3, MP4);
160 typedef CrossThreadTask4<P1, MP1, P2, MP2, P3, MP3, P4, MP4> CrossThreadTask ; 166 typedef CrossThreadTask4<P1, MP1, P2, MP2, P3, MP3, P4, MP4> CrossThreadTask ;
161 typedef typename CrossThreadTaskTraits<P1>::ParamType Param1; 167 typedef typename CrossThreadTaskTraits<P1>::ParamType Param1;
162 typedef typename CrossThreadTaskTraits<P2>::ParamType Param2; 168 typedef typename CrossThreadTaskTraits<P2>::ParamType Param2;
163 typedef typename CrossThreadTaskTraits<P3>::ParamType Param3; 169 typedef typename CrossThreadTaskTraits<P3>::ParamType Param3;
164 typedef typename CrossThreadTaskTraits<P4>::ParamType Param4; 170 typedef typename CrossThreadTaskTraits<P4>::ParamType Param4;
165 171
166 static PassOwnPtr<CrossThreadTask> create(Method method, Param1 parameter1, Param2 parameter2, Param3 parameter3, Param4 parameter4) 172 static PassOwnPtr<CrossThreadTask> create(Method method, Param1 parameter1, Param2 parameter2, Param3 parameter3, Param4 parameter4)
167 { 173 {
(...skipping 17 matching lines...) Expand all
185 191
186 private: 192 private:
187 Method m_method; 193 Method m_method;
188 P1 m_parameter1; 194 P1 m_parameter1;
189 P2 m_parameter2; 195 P2 m_parameter2;
190 P3 m_parameter3; 196 P3 m_parameter3;
191 P4 m_parameter4; 197 P4 m_parameter4;
192 }; 198 };
193 199
194 template<typename P1, typename MP1, typename P2, typename MP2, typename P3, type name MP3, typename P4, typename MP4, typename P5, typename MP5> 200 template<typename P1, typename MP1, typename P2, typename MP2, typename P3, type name MP3, typename P4, typename MP4, typename P5, typename MP5>
195 class CrossThreadTask5 : public ExecutionContextTask { 201 class GC_PLUGIN_IGNORE("crbug.com/378192") CrossThreadTask5 : public ExecutionCo ntextTask {
196 public: 202 public:
197 typedef void (*Method)(ExecutionContext*, MP1, MP2, MP3, MP4, MP5); 203 typedef void (*Method)(ExecutionContext*, MP1, MP2, MP3, MP4, MP5);
198 typedef CrossThreadTask5<P1, MP1, P2, MP2, P3, MP3, P4, MP4, P5, MP5> CrossT hreadTask; 204 typedef CrossThreadTask5<P1, MP1, P2, MP2, P3, MP3, P4, MP4, P5, MP5> CrossT hreadTask;
199 typedef typename CrossThreadTaskTraits<P1>::ParamType Param1; 205 typedef typename CrossThreadTaskTraits<P1>::ParamType Param1;
200 typedef typename CrossThreadTaskTraits<P2>::ParamType Param2; 206 typedef typename CrossThreadTaskTraits<P2>::ParamType Param2;
201 typedef typename CrossThreadTaskTraits<P3>::ParamType Param3; 207 typedef typename CrossThreadTaskTraits<P3>::ParamType Param3;
202 typedef typename CrossThreadTaskTraits<P4>::ParamType Param4; 208 typedef typename CrossThreadTaskTraits<P4>::ParamType Param4;
203 typedef typename CrossThreadTaskTraits<P5>::ParamType Param5; 209 typedef typename CrossThreadTaskTraits<P5>::ParamType Param5;
204 210
205 static PassOwnPtr<CrossThreadTask> create(Method method, Param1 parameter1, Param2 parameter2, Param3 parameter3, Param4 parameter4, Param5 parameter5) 211 static PassOwnPtr<CrossThreadTask> create(Method method, Param1 parameter1, Param2 parameter2, Param3 parameter3, Param4 parameter4, Param5 parameter5)
(...skipping 20 matching lines...) Expand all
226 private: 232 private:
227 Method m_method; 233 Method m_method;
228 P1 m_parameter1; 234 P1 m_parameter1;
229 P2 m_parameter2; 235 P2 m_parameter2;
230 P3 m_parameter3; 236 P3 m_parameter3;
231 P4 m_parameter4; 237 P4 m_parameter4;
232 P5 m_parameter5; 238 P5 m_parameter5;
233 }; 239 };
234 240
235 template<typename P1, typename MP1, typename P2, typename MP2, typename P3, type name MP3, typename P4, typename MP4, typename P5, typename MP5, typename P6, typ ename MP6> 241 template<typename P1, typename MP1, typename P2, typename MP2, typename P3, type name MP3, typename P4, typename MP4, typename P5, typename MP5, typename P6, typ ename MP6>
236 class CrossThreadTask6 : public ExecutionContextTask { 242 class GC_PLUGIN_IGNORE("crbug.com/378192") CrossThreadTask6 : public ExecutionCo ntextTask {
237 public: 243 public:
238 typedef void (*Method)(ExecutionContext*, MP1, MP2, MP3, MP4, MP5, MP6); 244 typedef void (*Method)(ExecutionContext*, MP1, MP2, MP3, MP4, MP5, MP6);
239 typedef CrossThreadTask6<P1, MP1, P2, MP2, P3, MP3, P4, MP4, P5, MP5, P6, MP 6> CrossThreadTask; 245 typedef CrossThreadTask6<P1, MP1, P2, MP2, P3, MP3, P4, MP4, P5, MP5, P6, MP 6> CrossThreadTask;
240 typedef typename CrossThreadTaskTraits<P1>::ParamType Param1; 246 typedef typename CrossThreadTaskTraits<P1>::ParamType Param1;
241 typedef typename CrossThreadTaskTraits<P2>::ParamType Param2; 247 typedef typename CrossThreadTaskTraits<P2>::ParamType Param2;
242 typedef typename CrossThreadTaskTraits<P3>::ParamType Param3; 248 typedef typename CrossThreadTaskTraits<P3>::ParamType Param3;
243 typedef typename CrossThreadTaskTraits<P4>::ParamType Param4; 249 typedef typename CrossThreadTaskTraits<P4>::ParamType Param4;
244 typedef typename CrossThreadTaskTraits<P5>::ParamType Param5; 250 typedef typename CrossThreadTaskTraits<P5>::ParamType Param5;
245 typedef typename CrossThreadTaskTraits<P6>::ParamType Param6; 251 typedef typename CrossThreadTaskTraits<P6>::ParamType Param6;
246 252
(...skipping 23 matching lines...) Expand all
270 Method m_method; 276 Method m_method;
271 P1 m_parameter1; 277 P1 m_parameter1;
272 P2 m_parameter2; 278 P2 m_parameter2;
273 P3 m_parameter3; 279 P3 m_parameter3;
274 P4 m_parameter4; 280 P4 m_parameter4;
275 P5 m_parameter5; 281 P5 m_parameter5;
276 P6 m_parameter6; 282 P6 m_parameter6;
277 }; 283 };
278 284
279 template<typename P1, typename MP1, typename P2, typename MP2, typename P3, type name MP3, typename P4, typename MP4, typename P5, typename MP5, typename P6, typ ename MP6, typename P7, typename MP7> 285 template<typename P1, typename MP1, typename P2, typename MP2, typename P3, type name MP3, typename P4, typename MP4, typename P5, typename MP5, typename P6, typ ename MP6, typename P7, typename MP7>
280 class CrossThreadTask7 : public ExecutionContextTask { 286 class GC_PLUGIN_IGNORE("crbug.com/378192") CrossThreadTask7 : public ExecutionCo ntextTask {
281 public: 287 public:
282 typedef void (*Method)(ExecutionContext*, MP1, MP2, MP3, MP4, MP5, MP6, MP7) ; 288 typedef void (*Method)(ExecutionContext*, MP1, MP2, MP3, MP4, MP5, MP6, MP7) ;
283 typedef CrossThreadTask7<P1, MP1, P2, MP2, P3, MP3, P4, MP4, P5, MP5, P6, MP 6, P7, MP7> CrossThreadTask; 289 typedef CrossThreadTask7<P1, MP1, P2, MP2, P3, MP3, P4, MP4, P5, MP5, P6, MP 6, P7, MP7> CrossThreadTask;
284 typedef typename CrossThreadTaskTraits<P1>::ParamType Param1; 290 typedef typename CrossThreadTaskTraits<P1>::ParamType Param1;
285 typedef typename CrossThreadTaskTraits<P2>::ParamType Param2; 291 typedef typename CrossThreadTaskTraits<P2>::ParamType Param2;
286 typedef typename CrossThreadTaskTraits<P3>::ParamType Param3; 292 typedef typename CrossThreadTaskTraits<P3>::ParamType Param3;
287 typedef typename CrossThreadTaskTraits<P4>::ParamType Param4; 293 typedef typename CrossThreadTaskTraits<P4>::ParamType Param4;
288 typedef typename CrossThreadTaskTraits<P5>::ParamType Param5; 294 typedef typename CrossThreadTaskTraits<P5>::ParamType Param5;
289 typedef typename CrossThreadTaskTraits<P6>::ParamType Param6; 295 typedef typename CrossThreadTaskTraits<P6>::ParamType Param6;
290 typedef typename CrossThreadTaskTraits<P7>::ParamType Param7; 296 typedef typename CrossThreadTaskTraits<P7>::ParamType Param7;
(...skipping 26 matching lines...) Expand all
317 P1 m_parameter1; 323 P1 m_parameter1;
318 P2 m_parameter2; 324 P2 m_parameter2;
319 P3 m_parameter3; 325 P3 m_parameter3;
320 P4 m_parameter4; 326 P4 m_parameter4;
321 P5 m_parameter5; 327 P5 m_parameter5;
322 P6 m_parameter6; 328 P6 m_parameter6;
323 P7 m_parameter7; 329 P7 m_parameter7;
324 }; 330 };
325 331
326 template<typename P1, typename MP1, typename P2, typename MP2, typename P3, type name MP3, typename P4, typename MP4, typename P5, typename MP5, typename P6, typ ename MP6, typename P7, typename MP7, typename P8, typename MP8> 332 template<typename P1, typename MP1, typename P2, typename MP2, typename P3, type name MP3, typename P4, typename MP4, typename P5, typename MP5, typename P6, typ ename MP6, typename P7, typename MP7, typename P8, typename MP8>
327 class CrossThreadTask8 : public ExecutionContextTask { 333 class GC_PLUGIN_IGNORE("crbug.com/378192") CrossThreadTask8 : public ExecutionCo ntextTask {
328 public: 334 public:
329 typedef void (*Method)(ExecutionContext*, MP1, MP2, MP3, MP4, MP5, MP6, MP7, MP8); 335 typedef void (*Method)(ExecutionContext*, MP1, MP2, MP3, MP4, MP5, MP6, MP7, MP8);
330 typedef CrossThreadTask8<P1, MP1, P2, MP2, P3, MP3, P4, MP4, P5, MP5, P6, MP 6, P7, MP7, P8, MP8> CrossThreadTask; 336 typedef CrossThreadTask8<P1, MP1, P2, MP2, P3, MP3, P4, MP4, P5, MP5, P6, MP 6, P7, MP7, P8, MP8> CrossThreadTask;
331 typedef typename CrossThreadTaskTraits<P1>::ParamType Param1; 337 typedef typename CrossThreadTaskTraits<P1>::ParamType Param1;
332 typedef typename CrossThreadTaskTraits<P2>::ParamType Param2; 338 typedef typename CrossThreadTaskTraits<P2>::ParamType Param2;
333 typedef typename CrossThreadTaskTraits<P3>::ParamType Param3; 339 typedef typename CrossThreadTaskTraits<P3>::ParamType Param3;
334 typedef typename CrossThreadTaskTraits<P4>::ParamType Param4; 340 typedef typename CrossThreadTaskTraits<P4>::ParamType Param4;
335 typedef typename CrossThreadTaskTraits<P5>::ParamType Param5; 341 typedef typename CrossThreadTaskTraits<P5>::ParamType Param5;
336 typedef typename CrossThreadTaskTraits<P6>::ParamType Param6; 342 typedef typename CrossThreadTaskTraits<P6>::ParamType Param6;
337 typedef typename CrossThreadTaskTraits<P7>::ParamType Param7; 343 typedef typename CrossThreadTaskTraits<P7>::ParamType Param7;
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 method, 474 method,
469 CrossThreadCopier<P1>::co py(parameter1), CrossThreadCopier<P2>::copy(parameter2), 475 CrossThreadCopier<P1>::co py(parameter1), CrossThreadCopier<P2>::copy(parameter2),
470 CrossThreadCopier<P3>::co py(parameter3), CrossThreadCopier<P4>::copy(parameter4), 476 CrossThreadCopier<P3>::co py(parameter3), CrossThreadCopier<P4>::copy(parameter4),
471 CrossThreadCopier<P5>::co py(parameter5), CrossThreadCopier<P6>::copy(parameter6), 477 CrossThreadCopier<P5>::co py(parameter5), CrossThreadCopier<P6>::copy(parameter6),
472 CrossThreadCopier<P7>::co py(parameter7), CrossThreadCopier<P8>::copy(parameter8)); 478 CrossThreadCopier<P7>::co py(parameter7), CrossThreadCopier<P8>::copy(parameter8));
473 } 479 }
474 480
475 } // namespace WebCore 481 } // namespace WebCore
476 482
477 #endif // CrossThreadTask_h 483 #endif // CrossThreadTask_h
OLDNEW
« no previous file with comments | « no previous file | Source/modules/websockets/ThreadableWebSocketChannelClientWrapper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698