Fixed issue with new / delete operators
authorBenjamin Segovia <segovia.benjamin@gmail.com>
Sat, 7 Apr 2012 00:06:16 +0000 (17:06 -0700)
committerKeith Packard <keithp@keithp.com>
Fri, 10 Aug 2012 23:16:08 +0000 (16:16 -0700)
backend/src/backend/gen_context.hpp
backend/src/backend/gen_program.hpp
backend/src/backend/program.cpp
backend/src/backend/sim_context.hpp
backend/src/backend/sim_program.hpp
backend/src/sys/alloc.hpp

index 9827502..d2d06ac 100644 (file)
@@ -48,7 +48,6 @@ namespace gbe
     virtual void emitCode(void);
     /*! Implements base class */
     virtual Kernel *allocateKernel(void);
-    GBE_CLASS(GenContext);
   };
 
 } /* namespace gbe */
index 219a1ee..8eb75b9 100644 (file)
@@ -58,7 +58,6 @@ namespace gbe {
     virtual ~GenProgram(void);
     /*! Implements base class */
     Kernel *compileKernel(const ir::Unit &unit, const std::string &name);
-    GBE_STRUCT(GenProgram);   //!< Use gbe allocators
   };
 
 } /* namespace gbe */
index d3ef8a7..ec9d444 100644 (file)
@@ -167,30 +167,33 @@ GBE_EXPORT_SYMBOL gbe_kernel_get_simd_width_cb *gbe_kernel_get_simd_width = NULL
 GBE_EXPORT_SYMBOL gbe_kernel_get_curbe_offset_cb *gbe_kernel_get_curbe_offset = NULL;
 GBE_EXPORT_SYMBOL gbe_kernel_get_required_work_group_size_cb *gbe_kernel_get_required_work_group_size = NULL;
 
-/* Use pre-main to setup the call backs */
-struct CallBackInitializer
+namespace gbe
 {
-  CallBackInitializer(void) {
-    gbe_program_delete = gbe::programDelete;
-    gbe_program_get_kernel_num = gbe::programGetKernelNum;
-    gbe_program_get_kernel_by_name = gbe::programGetKernelByName;
-    gbe_program_get_kernel = gbe::programGetKernel;
-    gbe_kernel_get_name = gbe::kernelGetName;
-    gbe_kernel_get_code = gbe::kernelGetCode;
-    gbe_kernel_get_code_size = gbe::kernelGetCodeSize;
-    gbe_kernel_get_arg_num = gbe::kernelGetArgNum;
-    gbe_kernel_get_arg_size = gbe::kernelGetArgSize;
-    gbe_kernel_get_arg_type = gbe::kernelGetArgType;
-    gbe_kernel_get_simd_width = gbe::kernelGetSIMDWidth;
-    gbe_kernel_get_curbe_offset = gbe::kernelGetCurbeOffset;
-    gbe_kernel_get_required_work_group_size = gbe::kernelGetRequiredWorkGroupSize;
-    const char *run_it = getenv("OCL_SIMULATOR");
-    if (run_it != NULL && !strcmp(run_it, "2"))
-      simSetupCallBacks();
-    else
-      genSetupCallBacks();
-  }
-};
-
-static CallBackInitializer cbInitializer;
+  /* Use pre-main to setup the call backs */
+  struct CallBackInitializer
+  {
+    CallBackInitializer(void) {
+      gbe_program_delete = gbe::programDelete;
+      gbe_program_get_kernel_num = gbe::programGetKernelNum;
+      gbe_program_get_kernel_by_name = gbe::programGetKernelByName;
+      gbe_program_get_kernel = gbe::programGetKernel;
+      gbe_kernel_get_name = gbe::kernelGetName;
+      gbe_kernel_get_code = gbe::kernelGetCode;
+      gbe_kernel_get_code_size = gbe::kernelGetCodeSize;
+      gbe_kernel_get_arg_num = gbe::kernelGetArgNum;
+      gbe_kernel_get_arg_size = gbe::kernelGetArgSize;
+      gbe_kernel_get_arg_type = gbe::kernelGetArgType;
+      gbe_kernel_get_simd_width = gbe::kernelGetSIMDWidth;
+      gbe_kernel_get_curbe_offset = gbe::kernelGetCurbeOffset;
+      gbe_kernel_get_required_work_group_size = gbe::kernelGetRequiredWorkGroupSize;
+      const char *run_it = getenv("OCL_SIMULATOR");
+      if (run_it != NULL && !strcmp(run_it, "2"))
+        simSetupCallBacks();
+      else
+        genSetupCallBacks();
+    }
+  };
+
+  static CallBackInitializer cbInitializer;
+} /* namespace gbe */
 
index c46acff..13d83c7 100644 (file)
@@ -48,7 +48,6 @@ namespace gbe
     virtual void emitCode(void);
     /*! Implements base class */
     virtual Kernel *allocateKernel(void);
-    GBE_CLASS(SimContext);
   };
 
 } /* namespace gbe */
index 005221d..646453c 100644 (file)
@@ -47,7 +47,6 @@ namespace gbe {
     virtual size_t getCodeSize(void) const { return sizeof(&fn); }
     SimKernelCallBack *fn; //!< Function that runs the code
     void *handle;          //!< dlopen / dlclose / dlsym handle
-    GBE_STRUCT(SimKernel); //!< Use gbe allocators
   };
 
   /*! Describe a compiled program */
@@ -59,7 +58,6 @@ namespace gbe {
     virtual ~SimProgram(void);
     /*! Implements base class */
     virtual Kernel *compileKernel(const ir::Unit &unit, const std::string &name);
-    GBE_STRUCT(SimProgram); //!< Use gbe allocators
   };
 
 } /* namespace gbe */
index 83fd9c7..ba00aff 100644 (file)
@@ -61,6 +61,11 @@ namespace gbe
   }
 } /* namespace gbe */
 
+/*! Declare a class with custom allocators */
+#define GBE_CLASS(TYPE) \
+  GBE_STRUCT(TYPE)      \
+private:
+
 /*! Declare a structure with custom allocators */
 #define GBE_STRUCT(TYPE)                                     \
 public:                                                      \
@@ -76,6 +81,8 @@ public:                                                      \
     else                                                     \
       return gbe::memAlloc(size);                            \
   }                                                          \
+  void* operator new(size_t size, void *p) { return p; }     \
+  void* operator new[](size_t size, void *p) { return p; }   \
   void  operator delete(void* ptr) {                         \
     if (AlignOf<TYPE>::value > sizeof(uintptr_t))            \
       return gbe::alignedFree(ptr);                          \
@@ -88,13 +95,6 @@ public:                                                      \
     else                                                     \
       return gbe::memFree(ptr);                              \
   }                                                          \
-  void* operator new(size_t size, void *p) { return p; }     \
-  void* operator new[](size_t size, void *p) { return p; }   \
-
-/*! Declare a class with custom allocators */
-#define GBE_CLASS(TYPE) \
-  GBE_STRUCT(TYPE)      \
-private:
 
 /*! Macros to handle allocation position */
 #define GBE_NEW(T,...)               \