Removing memory leak in kNeighbor benchmark
[charm.git] / examples / charm++ / X10 / X10_test.def.h
1 /* DEFS: message asyncMsg;
2  */
3 #ifndef CK_TEMPLATES_ONLY
4 void *CMessage_asyncMsg::operator new(size_t s){
5   return asyncMsg::alloc(__idx, s, 0, 0);
6 }
7 void *CMessage_asyncMsg::operator new(size_t s, int* sz){
8   return asyncMsg::alloc(__idx, s, sz, 0);
9 }
10 void *CMessage_asyncMsg::operator new(size_t s, int* sz,const int pb){
11   return asyncMsg::alloc(__idx, s, sz, pb);
12 }
13 void *CMessage_asyncMsg::operator new(size_t s, const int p) {
14   return asyncMsg::alloc(__idx, s, 0, p);
15 }
16 void* CMessage_asyncMsg::alloc(int msgnum, size_t sz, int *sizes, int pb) {
17   int offsets[1];
18   offsets[0] = ALIGN8(sz);
19   asyncMsg *newmsg = (asyncMsg *) CkAllocMsg(msgnum, offsets[0], pb);
20   return (void *) newmsg;
21 }
22 void* CMessage_asyncMsg::pack(asyncMsg *msg) {
23   return (void *) msg;
24 }
25 asyncMsg* CMessage_asyncMsg::unpack(void* buf) {
26   asyncMsg *msg = (asyncMsg *) buf;
27   return msg;
28 }
29 int CMessage_asyncMsg::__idx=0;
30 #endif
31
32 /* DEFS: readonly CProxy_Main mainProxy;
33  */
34 extern CProxy_Main mainProxy;
35 #ifndef CK_TEMPLATES_ONLY
36 extern "C" void __xlater_roPup_mainProxy(void *_impl_pup_er) {
37   PUP::er &_impl_p=*(PUP::er *)_impl_pup_er;
38   _impl_p|mainProxy;
39 }
40 #endif
41
42 /* DEFS: readonly int nPlaces;
43  */
44 extern int nPlaces;
45 #ifndef CK_TEMPLATES_ONLY
46 extern "C" void __xlater_roPup_nPlaces(void *_impl_pup_er) {
47   PUP::er &_impl_p=*(PUP::er *)_impl_pup_er;
48   _impl_p|nPlaces;
49 }
50 #endif
51
52 /* DEFS: readonly CProxy_Places placesProxy;
53  */
54 extern CProxy_Places placesProxy;
55 #ifndef CK_TEMPLATES_ONLY
56 extern "C" void __xlater_roPup_placesProxy(void *_impl_pup_er) {
57   PUP::er &_impl_p=*(PUP::er *)_impl_pup_er;
58   _impl_p|placesProxy;
59 }
60 #endif
61
62 /* DEFS: mainchare Main: Chare{
63 Main(CkArgMsg* impl_msg);
64 threaded void libThread(void);
65 };
66  */
67 #ifndef CK_TEMPLATES_ONLY
68  int CkIndex_Main::__idx=0;
69 #endif
70 #ifndef CK_TEMPLATES_ONLY
71 /* DEFS: Main(CkArgMsg* impl_msg);
72  */
73 CkChareID CProxy_Main::ckNew(CkArgMsg* impl_msg, int impl_onPE)
74 {
75   CkChareID impl_ret;
76   CkCreateChare(CkIndex_Main::__idx, CkIndex_Main::__idx_Main_CkArgMsg, impl_msg, &impl_ret, impl_onPE);
77   return impl_ret;
78 }
79 void CProxy_Main::ckNew(CkArgMsg* impl_msg, CkChareID* pcid, int impl_onPE)
80 {
81   CkCreateChare(CkIndex_Main::__idx, CkIndex_Main::__idx_Main_CkArgMsg, impl_msg, pcid, impl_onPE);
82 }
83   CProxy_Main::CProxy_Main(CkArgMsg* impl_msg, int impl_onPE)
84 {
85   CkChareID impl_ret;
86   CkCreateChare(CkIndex_Main::__idx, CkIndex_Main::__idx_Main_CkArgMsg, impl_msg, &impl_ret, impl_onPE);
87   ckSetChareID(impl_ret);
88 }
89  int CkIndex_Main::__idx_Main_CkArgMsg=0;
90 void CkIndex_Main::_call_Main_CkArgMsg(void* impl_msg,Main * impl_obj)
91 {
92   new (impl_obj) Main((CkArgMsg*)impl_msg);
93 }
94
95 /* DEFS: threaded void libThread(void);
96  */
97 void CProxy_Main::libThread(void)
98 {
99   ckCheck();
100   void *impl_msg = CkAllocSysMsg();
101   if (ckIsDelegated()) {
102     int destPE=CkChareMsgPrep(CkIndex_Main::__idx_libThread_void, impl_msg, &ckGetChareID());
103     if (destPE!=-1) ckDelegatedTo()->ChareSend(ckDelegatedPtr(),CkIndex_Main::__idx_libThread_void, impl_msg, &ckGetChareID(),destPE);
104   }
105   else CkSendMsg(CkIndex_Main::__idx_libThread_void, impl_msg, &ckGetChareID(),0);
106 }
107  int CkIndex_Main::__idx_libThread_void=0;
108 void CkIndex_Main::_call_libThread_void(void* impl_msg,Main * impl_obj)
109 {
110   CthThread tid = CthCreate((CthVoidFn)_callthr_libThread_void, new CkThrCallArg(impl_msg,impl_obj), 0);
111   ((Chare *)impl_obj)->CkAddThreadListeners(tid,impl_msg);
112   CthAwaken(tid);
113 }
114 void CkIndex_Main::_callthr_libThread_void(CkThrCallArg *impl_arg)
115 {
116   void *impl_msg = impl_arg->msg;
117   Main *impl_obj = (Main *) impl_arg->obj;
118   delete impl_arg;
119   CkFreeSysMsg(impl_msg);
120   impl_obj->libThread();
121 }
122 #endif /*CK_TEMPLATES_ONLY*/
123 #ifndef CK_TEMPLATES_ONLY
124 void CkIndex_Main::__register(const char *s, size_t size) {
125   __idx = CkRegisterChare(s, size);
126   CkRegisterBase(__idx, CkIndex_Chare::__idx);
127 // REG: Main(CkArgMsg* impl_msg);
128   __idx_Main_CkArgMsg = CkRegisterEp("Main(CkArgMsg* impl_msg)",
129      (CkCallFnPtr)_call_Main_CkArgMsg, CMessage_CkArgMsg::__idx, __idx, 0);
130   CkRegisterMainChare(__idx, __idx_Main_CkArgMsg);
131
132 // REG: threaded void libThread(void);
133   __idx_libThread_void = CkRegisterEp("libThread(void)",
134      (CkCallFnPtr)_call_libThread_void, 0, __idx, 0);
135 }
136 #endif
137
138 /* DEFS: array Places: ArrayElement{
139 Places(CkMigrateMessage* impl_msg);
140 void Places(void);
141 threaded void startAsync(int which_statement, const CkFutureID &ftHandle, int pe_src);
142 };
143  */
144 #ifndef CK_TEMPLATES_ONLY
145  int CkIndex_Places::__idx=0;
146 #endif
147 #ifndef CK_TEMPLATES_ONLY
148 /* DEFS: Places(CkMigrateMessage* impl_msg);
149  */
150
151 /* DEFS: void Places(void);
152  */
153 void CProxyElement_Places::insert(int onPE)
154
155   void *impl_msg = CkAllocSysMsg();
156    ckInsert((CkArrayMessage *)impl_msg,CkIndex_Places::__idx_Places_void,onPE);
157 }
158
159 /* DEFS: threaded void startAsync(int which_statement, const CkFutureID &ftHandle, int pe_src);
160  */
161 void CProxyElement_Places::startAsync(int which_statement, const CkFutureID &ftHandle, int pe_src, const CkEntryOptions *impl_e_opts) 
162 {
163   ckCheck();
164   //Marshall: int which_statement, const CkFutureID &ftHandle, int pe_src
165   int impl_off=0;
166   { //Find the size of the PUP'd data
167     PUP::sizer implP;
168     implP|which_statement;
169     //Have to cast away const-ness to get pup routine
170     implP|(CkFutureID &)ftHandle;
171     implP|pe_src;
172     impl_off+=implP.size();
173   }
174   CkMarshallMsg *impl_msg=CkAllocateMarshallMsg(impl_off,impl_e_opts);
175   { //Copy over the PUP'd data
176     PUP::toMem implP((void *)impl_msg->msgBuf);
177     implP|which_statement;
178     //Have to cast away const-ness to get pup routine
179     implP|(CkFutureID &)ftHandle;
180     implP|pe_src;
181   }
182   CkArrayMessage *impl_amsg=(CkArrayMessage *)impl_msg;
183   impl_amsg->array_setIfNotThere(CkArray_IfNotThere_buffer);
184   ckSend(impl_amsg, CkIndex_Places::__idx_startAsync_marshall2,0);
185 }
186 /* DEFS: Places(CkMigrateMessage* impl_msg);
187  */
188  int CkIndex_Places::__idx_Places_CkMigrateMessage=0;
189 void CkIndex_Places::_call_Places_CkMigrateMessage(void* impl_msg,Places * impl_obj)
190 {
191   new (impl_obj) Places((CkMigrateMessage*)impl_msg);
192 }
193
194 /* DEFS: void Places(void);
195  */
196 CkArrayID CProxy_Places::ckNew(const CkArrayOptions &opts)
197
198   void *impl_msg = CkAllocSysMsg();
199    return ckCreateArray((CkArrayMessage *)impl_msg,CkIndex_Places::__idx_Places_void,opts);
200 }
201  int CkIndex_Places::__idx_Places_void=0;
202 void CkIndex_Places::_call_Places_void(void* impl_msg,Places * impl_obj)
203 {
204   CkFreeSysMsg(impl_msg);
205   new (impl_obj) Places();
206 }
207
208 /* DEFS: threaded void startAsync(int which_statement, const CkFutureID &ftHandle, int pe_src);
209  */
210 void CProxy_Places::startAsync(int which_statement, const CkFutureID &ftHandle, int pe_src, const CkEntryOptions *impl_e_opts) 
211 {
212   ckCheck();
213   //Marshall: int which_statement, const CkFutureID &ftHandle, int pe_src
214   int impl_off=0;
215   { //Find the size of the PUP'd data
216     PUP::sizer implP;
217     implP|which_statement;
218     //Have to cast away const-ness to get pup routine
219     implP|(CkFutureID &)ftHandle;
220     implP|pe_src;
221     impl_off+=implP.size();
222   }
223   CkMarshallMsg *impl_msg=CkAllocateMarshallMsg(impl_off,impl_e_opts);
224   { //Copy over the PUP'd data
225     PUP::toMem implP((void *)impl_msg->msgBuf);
226     implP|which_statement;
227     //Have to cast away const-ness to get pup routine
228     implP|(CkFutureID &)ftHandle;
229     implP|pe_src;
230   }
231   CkArrayMessage *impl_amsg=(CkArrayMessage *)impl_msg;
232   impl_amsg->array_setIfNotThere(CkArray_IfNotThere_buffer);
233   ckBroadcast(impl_amsg, CkIndex_Places::__idx_startAsync_marshall2,0);
234 }
235  int CkIndex_Places::__idx_startAsync_marshall2=0;
236 void CkIndex_Places::_call_startAsync_marshall2(void* impl_msg,Places * impl_obj)
237 {
238   CthThread tid = CthCreate((CthVoidFn)_callthr_startAsync_marshall2, new CkThrCallArg(impl_msg,impl_obj), 0);
239   ((Chare *)impl_obj)->CkAddThreadListeners(tid,impl_msg);
240   CthAwaken(tid);
241 }
242 void CkIndex_Places::_callthr_startAsync_marshall2(CkThrCallArg *impl_arg)
243 {
244   void *impl_msg = impl_arg->msg;
245   Places *impl_obj = (Places *) impl_arg->obj;
246   delete impl_arg;
247   char *impl_buf=((CkMarshallMsg *)impl_msg)->msgBuf;
248   /*Unmarshall pup'd fields: int which_statement, const CkFutureID &ftHandle, int pe_src*/
249   PUP::fromMem implP(impl_buf);
250   int which_statement; implP|which_statement;
251   CkFutureID ftHandle; implP|ftHandle;
252   int pe_src; implP|pe_src;
253   impl_buf+=CK_ALIGN(implP.size(),16);
254   /*Unmarshall arrays:*/
255   impl_obj->startAsync(which_statement, ftHandle, pe_src);
256   delete (CkMarshallMsg *)impl_msg;
257 }
258 void CkIndex_Places::_marshallmessagepup_startAsync_marshall2(PUP::er &implDestP,void *impl_msg) {
259   char *impl_buf=((CkMarshallMsg *)impl_msg)->msgBuf;
260   /*Unmarshall pup'd fields: int which_statement, const CkFutureID &ftHandle, int pe_src*/
261   PUP::fromMem implP(impl_buf);
262   int which_statement; implP|which_statement;
263   CkFutureID ftHandle; implP|ftHandle;
264   int pe_src; implP|pe_src;
265   impl_buf+=CK_ALIGN(implP.size(),16);
266   /*Unmarshall arrays:*/
267   if (implDestP.hasComments()) implDestP.comment("which_statement");
268   implDestP|which_statement;
269   if (implDestP.hasComments()) implDestP.comment("ftHandle");
270   implDestP|ftHandle;
271   if (implDestP.hasComments()) implDestP.comment("pe_src");
272   implDestP|pe_src;
273 }
274 /* DEFS: Places(CkMigrateMessage* impl_msg);
275  */
276
277 /* DEFS: void Places(void);
278  */
279
280 /* DEFS: threaded void startAsync(int which_statement, const CkFutureID &ftHandle, int pe_src);
281  */
282 void CProxySection_Places::startAsync(int which_statement, const CkFutureID &ftHandle, int pe_src, const CkEntryOptions *impl_e_opts) 
283 {
284   ckCheck();
285   //Marshall: int which_statement, const CkFutureID &ftHandle, int pe_src
286   int impl_off=0;
287   { //Find the size of the PUP'd data
288     PUP::sizer implP;
289     implP|which_statement;
290     //Have to cast away const-ness to get pup routine
291     implP|(CkFutureID &)ftHandle;
292     implP|pe_src;
293     impl_off+=implP.size();
294   }
295   CkMarshallMsg *impl_msg=CkAllocateMarshallMsg(impl_off,impl_e_opts);
296   { //Copy over the PUP'd data
297     PUP::toMem implP((void *)impl_msg->msgBuf);
298     implP|which_statement;
299     //Have to cast away const-ness to get pup routine
300     implP|(CkFutureID &)ftHandle;
301     implP|pe_src;
302   }
303   CkArrayMessage *impl_amsg=(CkArrayMessage *)impl_msg;
304   impl_amsg->array_setIfNotThere(CkArray_IfNotThere_buffer);
305   ckSend(impl_amsg, CkIndex_Places::__idx_startAsync_marshall2,0);
306 }
307 #endif /*CK_TEMPLATES_ONLY*/
308 #ifndef CK_TEMPLATES_ONLY
309 void CkIndex_Places::__register(const char *s, size_t size) {
310   __idx = CkRegisterChare(s, size);
311   CkRegisterBase(__idx, CkIndex_ArrayElement::__idx);
312 // REG: Places(CkMigrateMessage* impl_msg);
313   __idx_Places_CkMigrateMessage = CkRegisterEp("Places(CkMigrateMessage* impl_msg)",
314      (CkCallFnPtr)_call_Places_CkMigrateMessage, 0, __idx, 0);
315   CkRegisterMigCtor(__idx, __idx_Places_CkMigrateMessage);
316
317 // REG: void Places(void);
318   __idx_Places_void = CkRegisterEp("Places(void)",
319      (CkCallFnPtr)_call_Places_void, 0, __idx, 0);
320   CkRegisterDefaultCtor(__idx, __idx_Places_void);
321
322 // REG: threaded void startAsync(int which_statement, const CkFutureID &ftHandle, int pe_src);
323   __idx_startAsync_marshall2 = CkRegisterEp("startAsync(int which_statement, const CkFutureID &ftHandle, int pe_src)",
324      (CkCallFnPtr)_call_startAsync_marshall2, CkMarshallMsg::__idx, __idx, 0);
325   CkRegisterMessagePupFn(__idx_startAsync_marshall2,(CkMessagePupFn)_marshallmessagepup_startAsync_marshall2);
326 }
327 #endif
328
329 #ifndef CK_TEMPLATES_ONLY
330 void _registerX10_test(void)
331 {
332   static int _done = 0; if(_done) return; _done = 1;
333 /* REG: message asyncMsg;
334 */
335 CMessage_asyncMsg::__register("asyncMsg", sizeof(asyncMsg),(CkPackFnPtr) asyncMsg::pack,(CkUnpackFnPtr) asyncMsg::unpack);
336
337   CkRegisterReadonly("mainProxy","CProxy_Main",sizeof(mainProxy),(void *) &mainProxy,__xlater_roPup_mainProxy);
338
339   CkRegisterReadonly("nPlaces","int",sizeof(nPlaces),(void *) &nPlaces,__xlater_roPup_nPlaces);
340
341   CkRegisterReadonly("placesProxy","CProxy_Places",sizeof(placesProxy),(void *) &placesProxy,__xlater_roPup_placesProxy);
342
343 /* REG: mainchare Main: Chare{
344 Main(CkArgMsg* impl_msg);
345 threaded void libThread(void);
346 };
347 */
348   CkIndex_Main::__register("Main", sizeof(Main));
349
350 /* REG: array Places: ArrayElement{
351 Places(CkMigrateMessage* impl_msg);
352 void Places(void);
353 threaded void startAsync(int which_statement, const CkFutureID &ftHandle, int pe_src);
354 };
355 */
356   CkIndex_Places::__register("Places", sizeof(Places));
357
358 }
359 extern "C" void CkRegisterMainModule(void) {
360   _registerX10_test();
361 }
362 #endif