From 63b08143d6c6f74ce8ed3f5a83adc070cddc8e6b Mon Sep 17 00:00:00 2001 From: Torvald Riegel Date: Mon, 20 Feb 2012 20:57:37 +0000 Subject: [PATCH] libitm: Put gl_wt global lock on separate cache line. libitm/ * method-gl.cc (gl_wt_dispatch::orec): Put on separate cacheline. From-SVN: r184403 --- libitm/ChangeLog | 4 ++++ libitm/method-gl.cc | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/libitm/ChangeLog b/libitm/ChangeLog index da94906bcd3c..2676cbef4b03 100644 --- a/libitm/ChangeLog +++ b/libitm/ChangeLog @@ -1,3 +1,7 @@ +2012-02-20 Torvald Riegel + + * method-gl.cc (gl_wt_dispatch::orec): Put on separate cacheline. + 2012-02-20 Torvald Riegel * method-gl.cc (gl_wt_dispatch::rollback): Optimize memory orders. diff --git a/libitm/method-gl.cc b/libitm/method-gl.cc index 4fd506ef1543..4b6769ba2c00 100644 --- a/libitm/method-gl.cc +++ b/libitm/method-gl.cc @@ -41,7 +41,8 @@ struct gl_mg : public method_group static gtm_word clear_locked(gtm_word l) { return l & ~LOCK_BIT; } // The global ownership record. - atomic orec; + // No tail-padding necessary (the virtual functions aren't used frequently). + atomic orec __attribute__((aligned(HW_CACHELINE_SIZE))); virtual void init() { @@ -52,7 +53,6 @@ struct gl_mg : public method_group virtual void fini() { } }; -// TODO cacheline padding static gl_mg o_gl_mg;