|
From: <sv...@va...> - 2005-12-06 23:53:15
|
Author: njn
Date: 2005-12-06 23:53:12 +0000 (Tue, 06 Dec 2005)
New Revision: 5305
Log:
Do shadow writes in make_aligned64_* in one instruction instead of two.
Modified:
branches/COMPVBITS/memcheck/mc_main.c
Modified: branches/COMPVBITS/memcheck/mc_main.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/COMPVBITS/memcheck/mc_main.c 2005-12-06 23:47:58 UTC (rev 53=
04)
+++ branches/COMPVBITS/memcheck/mc_main.c 2005-12-06 23:53:12 UTC (rev 53=
05)
@@ -1045,7 +1045,7 @@
static __inline__
void make_aligned_word64_writable ( Addr a )
{
- UWord sec_no, sm_off;
+ UWord sec_no, sm_off64;
SecMap* sm;
=20
PROF_EVENT(320, "make_aligned_word64_writable");
@@ -1069,17 +1069,16 @@
if (EXPECTED_NOT_TAKEN(is_distinguished_sm(primary_map[sec_no])))
primary_map[sec_no] =3D copy_for_writing(primary_map[sec_no]);
=20
- sm =3D primary_map[sec_no];
- sm_off =3D SM_OFF(a);
- sm->vabits32[sm_off+0] =3D MC_BITS32_WRITABLE;
- sm->vabits32[sm_off+1] =3D MC_BITS32_WRITABLE;
+ sm =3D primary_map[sec_no];
+ sm_off64 =3D SM_OFF_64(a);
+ ((UShort*)(sm->vabits32))[sm_off64] =3D MC_BITS64_WRITABLE;
}
=20
=20
static __inline__
void make_aligned_word64_noaccess ( Addr a )
{
- UWord sec_no, sm_off;
+ UWord sec_no, sm_off64;
SecMap* sm;
=20
PROF_EVENT(330, "make_aligned_word64_noaccess");
@@ -1103,10 +1102,9 @@
if (EXPECTED_NOT_TAKEN(is_distinguished_sm(primary_map[sec_no])))
primary_map[sec_no] =3D copy_for_writing(primary_map[sec_no]);
=20
- sm =3D primary_map[sec_no];
- sm_off =3D SM_OFF(a);
- sm->vabits32[sm_off+0] =3D MC_BITS32_NOACCESS;
- sm->vabits32[sm_off+1] =3D MC_BITS32_NOACCESS;
+ sm =3D primary_map[sec_no];
+ sm_off64 =3D SM_OFF_64(a);
+ ((UShort*)(sm->vabits32))[sm_off64] =3D MC_BITS64_NOACCESS;
}
=20
=20
|