]> granicus.if.org Git - gc/commitdiff
Merge branch 'remotes/paurkedal/t/disclaim-pullreq' plus some minor fixes
authorIvan Maidanski <ivmai@mail.ru>
Fri, 30 Sep 2011 09:30:16 +0000 (13:30 +0400)
committerIvan Maidanski <ivmai@mail.ru>
Fri, 30 Sep 2011 09:30:16 +0000 (13:30 +0400)
1  2 
include/gc_disclaim.h
tests/disclaim_bench.c

index 0437f7244c4f742cc4eeb39c3a0f999eb66f5b2d,44b29d494de62c10c8fb5ae21c85901b1b5f1ecf..2e8013d2922e79557a50f5157cd251f7b036b30e
  /* This API is defined only if the library has been suitably compiled   */
  /* (i.e. with ENABLE_DISCLAIM defined).                                 */
  
- /* Prepare the object kind used for GC_finalized_malloc.                */
++/* Prepare the object kind used by GC_finalized_malloc.  Call it from   */
++/* your initialization code or, at least, at some point before using    */
++/* finalized allocations.  The function is thread-safe.                 */
 +GC_API void GC_CALL GC_init_finalized_malloc(void);
 +
  /* Type of a disclaim call-back, always stored along with closure data  */
  /* passed as the second argument.                                       */
  typedef int (GC_CALLBACK * GC_disclaim_proc)(void * /*obj*/, void * /*cd*/);
index fb75d0d55e20a2a1ff5b8698f8f5e43894b38598,cee0a3ec29bd10907c73f5962ecf248134fb55ca..4dab169e9cea999332f320dcf866f4895b5ee8d8
  #include <stdio.h>
  #include <string.h>
  
 -#include <time.h> // FIXME: It would be good not to use timing API by
 -                  // default (is it is not quite portable).
 -
  #include "atomic_ops.h"
 -#include "private/gc_priv.h"
  #include "gc_disclaim.h"
  
- #ifndef AO_HAVE_fetch_and_add1
++#include "private/gc_priv.h"
 +
- int main(void)
- {
-     printf("Skipping disclaim_bench test\n");
-     return 0;
- }
- #else
+ static int free_count = 0;
  
- #include <time.h>
- static AO_t free_count = 0;
--typedef struct testobj_s *testobj_t;
  struct testobj_s {
--    testobj_t keep_link;
++    struct testobj_s *keep_link;
      int i;
  };
  
++typedef struct testobj_s *testobj_t;
++
  void GC_CALLBACK testobj_finalize(void *obj, void *carg)
  {
-     AO_fetch_and_add1((AO_t *)carg);
+     ++*(int *)carg;
      assert(((testobj_t)obj)->i++ == 109);
  }