Add threshold for thread local retired objects
authorMaged Michael <magedmichael@fb.com>
Sat, 6 Jan 2018 00:10:46 +0000 (16:10 -0800)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Sat, 6 Jan 2018 00:21:34 +0000 (16:21 -0800)
Summary: Change the threshold for pushing privately held retired object to the domain to a moderate constant instead of using the threshold for bulk reclamation which is too high for this purpose.

Reviewed By: djwatson

Differential Revision: D6665904

fbshipit-source-id: 0b090884843b0296a93af7994f7183f41c00000e

folly/experimental/hazptr/hazptr-impl.h

index 07e6891..5c343c5 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * Copyright 2017 Facebook, Inc.
+ * Copyright 2017-present Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -13,7 +13,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 /* override-include-guard */
 #ifndef HAZPTR_H
 #error "This should only be included by hazptr.h"
 /* override-include-guard */
 #ifndef HAZPTR_H
 #error "This should only be included by hazptr.h"
 #define HAZPTR_PRIV true
 #endif
 
 #define HAZPTR_PRIV true
 #endif
 
+#ifndef HAZPTR_PRIV_THRESHOLD
+#define HAZPTR_PRIV_THRESHOLD 20
+#endif
+
 #ifndef HAZPTR_ONE_DOMAIN
 #define HAZPTR_ONE_DOMAIN false
 #endif
 #ifndef HAZPTR_ONE_DOMAIN
 #define HAZPTR_ONE_DOMAIN false
 #endif
@@ -994,8 +997,7 @@ inline void hazptr_priv::push(hazptr_obj* obj) {
     head_ = obj;
   }
   tail_ = obj;
     head_ = obj;
   }
   tail_ = obj;
-  ++rcount_;
-  if (domain.reachedThreshold(rcount_)) {
+  if (++rcount_ >= HAZPTR_PRIV_THRESHOLD) {
     pushAllToDomain();
   }
 }
     pushAllToDomain();
   }
 }