|
From: <sv...@va...> - 2008-06-10 13:58:01
|
Author: bart
Date: 2008-06-10 14:55:13 +0100 (Tue, 10 Jun 2008)
New Revision: 8215
Log:
Another small optimization: moved code for printing memory accesses from run-time to instrumentation-time.
Modified:
trunk/exp-drd/drd_main.c
Modified: trunk/exp-drd/drd_main.c
===================================================================
--- trunk/exp-drd/drd_main.c 2008-06-10 12:51:51 UTC (rev 8214)
+++ trunk/exp-drd/drd_main.c 2008-06-10 13:55:13 UTC (rev 8215)
@@ -248,6 +248,16 @@
}
}
+static VG_REGPARM(2) void drd_trace_mem_load(const Addr addr, const SizeT size)
+{
+ return drd_trace_mem_access(addr, size, eLoad);
+}
+
+static VG_REGPARM(2) void drd_trace_mem_store(const Addr addr,const SizeT size)
+{
+ return drd_trace_mem_access(addr, size, eStore);
+}
+
static void drd_report_race(const Addr addr, const SizeT size,
const BmAccessTypeT access_type)
{
@@ -272,11 +282,6 @@
== VgThreadIdToDrdThreadId(VG_(get_running_tid())));
#endif
- if (UNLIKELY(drd_any_address_is_traced()))
- {
- drd_trace_mem_access(addr, size, eLoad);
- }
-
if (running_thread_is_recording()
&& (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_load_triggers_conflict(addr, addr + size)
@@ -288,11 +293,6 @@
static VG_REGPARM(1) void drd_trace_load_1(Addr addr)
{
- if (UNLIKELY(drd_any_address_is_traced()))
- {
- drd_trace_mem_access(addr, 1, eLoad);
- }
-
if (running_thread_is_recording()
&& (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_load_1_triggers_conflict(addr)
@@ -304,11 +304,6 @@
static VG_REGPARM(1) void drd_trace_load_2(Addr addr)
{
- if (UNLIKELY(drd_any_address_is_traced()))
- {
- drd_trace_mem_access(addr, 2, eLoad);
- }
-
if (running_thread_is_recording()
&& (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_load_2_triggers_conflict(addr)
@@ -320,11 +315,6 @@
static VG_REGPARM(1) void drd_trace_load_4(Addr addr)
{
- if (UNLIKELY(drd_any_address_is_traced()))
- {
- drd_trace_mem_access(addr, 4, eLoad);
- }
-
if (running_thread_is_recording()
&& (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_load_4_triggers_conflict(addr)
@@ -336,11 +326,6 @@
static VG_REGPARM(1) void drd_trace_load_8(Addr addr)
{
- if (UNLIKELY(drd_any_address_is_traced()))
- {
- drd_trace_mem_access(addr, 8, eLoad);
- }
-
if (running_thread_is_recording()
&& (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_load_8_triggers_conflict(addr)
@@ -359,11 +344,6 @@
== VgThreadIdToDrdThreadId(VG_(get_running_tid())));
#endif
- if (UNLIKELY(drd_any_address_is_traced()))
- {
- drd_trace_mem_access(addr, size, eStore);
- }
-
if (running_thread_is_recording()
&& (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_store_triggers_conflict(addr, addr + size)
@@ -375,11 +355,6 @@
static VG_REGPARM(1) void drd_trace_store_1(Addr addr)
{
- if (UNLIKELY(drd_any_address_is_traced()))
- {
- drd_trace_mem_access(addr, 1, eStore);
- }
-
if (running_thread_is_recording()
&& (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_store_1_triggers_conflict(addr)
@@ -391,11 +366,6 @@
static VG_REGPARM(1) void drd_trace_store_2(Addr addr)
{
- if (UNLIKELY(drd_any_address_is_traced()))
- {
- drd_trace_mem_access(addr, 2, eStore);
- }
-
if (running_thread_is_recording()
&& (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_store_2_triggers_conflict(addr)
@@ -407,11 +377,6 @@
static VG_REGPARM(1) void drd_trace_store_4(Addr addr)
{
- if (UNLIKELY(drd_any_address_is_traced()))
- {
- drd_trace_mem_access(addr, 4, eStore);
- }
-
if (running_thread_is_recording()
&& (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_store_4_triggers_conflict(addr)
@@ -423,11 +388,6 @@
static VG_REGPARM(1) void drd_trace_store_8(Addr addr)
{
- if (UNLIKELY(drd_any_address_is_traced()))
- {
- drd_trace_mem_access(addr, 8, eStore);
- }
-
if (running_thread_is_recording()
&& (s_drd_check_stack_accesses || ! thread_address_on_stack(addr))
&& bm_access_store_8_triggers_conflict(addr)
@@ -891,6 +851,18 @@
IRExpr** argv;
IRDirty* di;
+ if (UNLIKELY(drd_any_address_is_traced()))
+ {
+ addStmtToIRSB(bb,
+ IRStmt_Dirty(
+ unsafeIRDirty_0_N(/*regparms*/2,
+ "drd_trace_load",
+ VG_(fnptr_to_fnentry)
+ (drd_trace_mem_load),
+ mkIRExprVec_2(addr_expr,
+ mkIRExpr_HWord(size)))));
+ }
+
switch (size)
{
case 1:
@@ -941,6 +913,18 @@
IRExpr** argv;
IRDirty* di;
+ if (UNLIKELY(drd_any_address_is_traced()))
+ {
+ addStmtToIRSB(bb,
+ IRStmt_Dirty(
+ unsafeIRDirty_0_N(/*regparms*/2,
+ "drd_trace_store",
+ VG_(fnptr_to_fnentry)
+ (drd_trace_mem_store),
+ mkIRExprVec_2(addr_expr,
+ mkIRExpr_HWord(size)))));
+ }
+
switch (size)
{
case 1:
|