---

 opal/class/opal_free_list.c |   24 ++++++++++++++++++------
 1 files changed, 18 insertions(+), 6 deletions(-)

diff --quilt old/opal/class/opal_free_list.c new/opal/class/opal_free_list.c
--- old/opal/class/opal_free_list.c
+++ new/opal/class/opal_free_list.c
@@ -22,23 +22,25 @@
 #include "opal/sys/cache.h"


 static void opal_free_list_construct(opal_free_list_t* fl);
 static void opal_free_list_destruct(opal_free_list_t* fl);
+static void opal_free_list_cache_construct(opal_free_list_t* fl);
+static void opal_free_list_cache_destruct(opal_free_list_t* fl);

-OBJ_CLASS_INSTANCE(opal_free_list_t,
-                   opal_list_t,
-                   opal_free_list_construct,
-                   opal_free_list_destruct);
+OBJ_CLASS_INSTANCE_CACHE(opal_free_list_t,
+                         opal_list_t,
+                         opal_free_list_construct,
+                         opal_free_list_destruct,
+                         opal_free_list_cache_construct,
+                         opal_free_list_cache_destruct);
 OBJ_CLASS_INSTANCE(opal_free_list_item_t,
                    opal_list_item_t,
                    NULL, NULL);

 static void opal_free_list_construct(opal_free_list_t* fl)
 {
-    OBJ_CONSTRUCT(&fl->fl_lock, opal_mutex_t);
-    OBJ_CONSTRUCT(&fl->fl_condition, opal_condition_t);
     fl->fl_max_to_alloc = 0;
     fl->fl_num_allocated = 0;
     fl->fl_num_per_alloc = 0;
     fl->fl_num_waiting = 0;
     fl->fl_elem_size = 0;
@@ -55,10 +57,20 @@ static void opal_free_list_destruct(opal
         OBJ_DESTRUCT(item);
         free(item);
     }

     OBJ_DESTRUCT(&fl->fl_allocations);
+}
+
+static void opal_free_list_cache_construct(opal_free_list_t* fl)
+{
+    OBJ_CONSTRUCT(&fl->fl_lock, opal_mutex_t);
+    OBJ_CONSTRUCT(&fl->fl_condition, opal_condition_t);
+}
+
+static void opal_free_list_cache_destruct(opal_free_list_t* fl)
+{
     OBJ_DESTRUCT(&fl->fl_condition);
     OBJ_DESTRUCT(&fl->fl_lock);
 }

 int opal_free_list_init(
---

 orte/class/orte_pointer_array.c |   23 ++++++++++++++++++++---
 1 files changed, 20 insertions(+), 3 deletions(-)

diff --quilt old/orte/class/orte_pointer_array.c new/orte/class/orte_pointer_array.c
--- old/orte/class/orte_pointer_array.c
+++ new/orte/class/orte_pointer_array.c
@@ -27,25 +27,28 @@
 #include "orte/class/orte_pointer_array.h"
 #include "opal/util/output.h"

 static void orte_pointer_array_construct(orte_pointer_array_t *);
 static void orte_pointer_array_destruct(orte_pointer_array_t *);
+static void orte_pointer_array_cache_construct(orte_pointer_array_t *);
+static void orte_pointer_array_cache_destruct(orte_pointer_array_t *);
 static bool grow_table(orte_pointer_array_t *table);

-OBJ_CLASS_INSTANCE(
+OBJ_CLASS_INSTANCE_CACHE(
     orte_pointer_array_t,
     opal_object_t,
     orte_pointer_array_construct,
-    orte_pointer_array_destruct
+    orte_pointer_array_destruct,
+    orte_pointer_array_cache_construct,
+    orte_pointer_array_cache_destruct
 );

 /*
  * orte_pointer_array constructor
  */
 void orte_pointer_array_construct(orte_pointer_array_t *array)
 {
-    OBJ_CONSTRUCT(&array->lock, opal_mutex_t);
     array->lowest_free = 0;
     array->number_free = 0;
     array->size = 0;
     array->max_size = 0;
     array->block_size = 0;
@@ -59,11 +62,25 @@ void orte_pointer_array_destruct(orte_po
 {
     /* free table */
     if( NULL != array->addr) {
         free(array->addr);
     }
+}

+/*
+ * orte_pointer_array cache constructor
+ */
+void orte_pointer_array_cache_construct(orte_pointer_array_t *array)
+{
+    OBJ_CONSTRUCT(&array->lock, opal_mutex_t);
+}
+
+/*
+ * orte_pointer_array cache destructor
+ */
+void orte_pointer_array_cache_destruct(orte_pointer_array_t *array)
+{
     OBJ_DESTRUCT(&array->lock);
 }

 /**
  * initialize an array object

Reply via email to