You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
1
(8) |
2
(2) |
3
(1) |
4
(2) |
|
5
(1) |
6
(4) |
7
(6) |
8
(5) |
9
(3) |
10
(5) |
11
(1) |
|
12
(6) |
13
(4) |
14
(1) |
15
(4) |
16
(1) |
17
|
18
|
|
19
|
20
|
21
(2) |
22
(28) |
23
(17) |
24
(6) |
25
(4) |
|
26
(2) |
27
(2) |
28
|
29
(5) |
30
(8) |
31
(14) |
|
|
From: <sv...@va...> - 2015-07-04 16:33:59
|
Author: florian
Date: Sat Jul 4 17:33:51 2015
New Revision: 15393
Log:
Do not manipulate segment boundaries directly. Instead follow
the scheme from am_extend_map_client and let am_add_segment do
the work.
A bot more constification as well.
Modified:
branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c
Modified: branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c
==============================================================================
--- branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c (original)
+++ branches/ASPACEM_TWEAKS/coregrind/m_aspacemgr/aspacemgr-linux.c Sat Jul 4 17:33:51 2015
@@ -2049,7 +2049,7 @@
extend_into_adjacent_reservation_client (Addr addr, SSizeT delta,
Bool *overflow)
{
- NSegment *segA, *segR;
+ const NSegment *segA, *segR;
UInt prot;
SysRes sres;
@@ -2097,10 +2097,9 @@
}
/* Ok, success with the kernel. Update our structures. */
- segR->start += delta;
- segA->end += delta;
- aspacem_assert(segR->start <= segR->end);
-
+ NSegment seg_copy = *segA;
+ seg_copy.end += delta;
+ ML_(am_add_segment)( &seg_copy );
} else {
/* Extending the segment backwards. */
@@ -2133,9 +2132,9 @@
}
/* Ok, success with the kernel. Update our structures. */
- segR->end -= delta;
- segA->start -= delta;
- aspacem_assert(segR->start <= segR->end);
+ NSegment seg_copy = *segA;
+ seg_copy.start -= delta;
+ ML_(am_add_segment)( &seg_copy );
}
AM_SANITY_CHECK();
@@ -2367,7 +2366,7 @@
VG_(am_show_nsegments)(0, "VG_(am_extend_map_client) BEFORE");
/* Get the client segment */
- NSegment *seg = ML_(am_find_segment)(addr);
+ const NSegment *seg = ML_(am_find_segment)(addr);
aspacem_assert(seg->kind == SkFileC || seg->kind == SkAnonC ||
seg->kind == SkShmC);
|
|
From: Matthias S. <zz...@ge...> - 2015-07-04 00:34:41
|
Bug 349879
Measurements:
$ perl perf/vg_perf --reps=10 --tools=memcheck --vg=../orig/ --vg=../x86-load-asm/ perf/
-- Running tests in perf ----------------------------------------------
-- bigcode1 --
bigcode1 orig :0.06s me: 2.5s (41.2x, -----)
bigcode1 x86-load-asm:0.06s me: 2.5s (41.2x, 0.0%)
-- bigcode2 --
bigcode2 orig :0.06s me: 5.8s (97.0x, -----)
bigcode2 x86-load-asm:0.06s me: 5.8s (96.5x, 0.5%)
-- bz2 --
bz2 orig :0.45s me: 5.1s (11.3x, -----)
bz2 x86-load-asm:0.45s me: 5.0s (11.0x, 2.5%)
-- fbench --
fbench orig :0.27s me: 3.2s (11.9x, -----)
fbench x86-load-asm:0.27s me: 3.1s (11.5x, 3.1%)
-- ffbench --
ffbench orig :0.18s me: 1.9s (10.8x, -----)
ffbench x86-load-asm:0.18s me: 1.9s (10.3x, 4.6%)
-- heap --
heap orig :0.07s me: 4.6s (65.6x, -----)
heap x86-load-asm:0.07s me: 4.6s (65.1x, 0.7%)
-- heap_pdb4 --
heap_pdb4 orig :0.08s me: 7.3s (91.5x, -----)
heap_pdb4 x86-load-asm:0.08s me: 7.2s (90.6x, 1.0%)
-- many-loss-records --
many-loss-records orig :0.01s me: 1.2s (122.0x, -----)
many-loss-records x86-load-asm:0.01s me: 1.2s (121.0x, 0.8%)
-- many-xpts --
many-xpts orig :0.04s me: 1.4s (34.0x, -----)
many-xpts x86-load-asm:0.04s me: 1.4s (33.8x, 0.7%)
-- memrw --
memrw orig :0.04s me: 1.1s (28.2x, -----)
memrw x86-load-asm:0.04s me: 1.1s (28.2x, 0.0%)
-- sarp --
sarp orig :0.01s me: 2.1s (215.0x, -----)
sarp x86-load-asm:0.01s me: 2.1s (208.0x, 3.3%)
-- tinycc --
tinycc orig :0.13s me: 5.5s (42.1x, -----)
tinycc x86-load-asm:0.13s me: 5.4s (41.7x, 0.9%)
-- Finished tests in perf ----------------------------------------------
== 12 programs, 24 timings =================
---
memcheck/mc_main.c | 173 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 170 insertions(+), 3 deletions(-)
diff --git a/memcheck/mc_main.c b/memcheck/mc_main.c
index 73778fa..56e5618 100644
--- a/memcheck/mc_main.c
+++ b/memcheck/mc_main.c
@@ -1311,6 +1311,7 @@ void mc_LOADV_128_or_256_slow ( /*OUT*/ULong* res,
static
__attribute__((noinline))
+__attribute__((used))
VG_REGPARM(3) /* make sure we're using a fixed calling convention, since
this function may get called from hand written assembly. */
ULong mc_LOADVn_slow ( Addr a, SizeT nBits, Bool bigendian )
@@ -4430,10 +4431,49 @@ VG_REGPARM(1) ULong MC_(helperc_LOADV64be) ( Addr a )
{
return mc_LOADV64(a, True);
}
+
+#if ENABLE_ASSEMBLY_HELPERS && defined(PERF_FAST_LOADV) \
+ && defined(VGP_x86_linux)
+__asm__(
+".text\n"
+".align 16\n"
+".global vgMemCheck_helperc_LOADV64le\n"
+".type vgMemCheck_helperc_LOADV64le, @function\n"
+"vgMemCheck_helperc_LOADV64le:\n"
+" test $0x7,%al\n"
+" jnz 2f\n" /* jump if not aligned */
+" mov %eax,%ecx\n"
+" movzwl %ax,%edx\n"
+" shr $0x10,%ecx\n"
+" mov primary_map(,%ecx,4),%ecx\n"
+" shr $0x3,%edx\n"
+" movzwl (%ecx,%edx,2),%edx\n"
+" cmp $0xaaaa,%dx\n"
+" jne 1f\n" /* jump if not all defined */
+" xor %eax,%eax\n" /* return 0 in edx:eax */
+" xor %edx,%edx\n"
+" ret\n"
+".align 16\n"
+"1:\n"
+" cmp $0x5555,%dx\n"
+" jne 2f\n" /* jump if not all undefined */
+" or $0xffffffff,%eax\n" /* else return all bits set in edx:eax */
+" mov %eax,%edx\n"
+" ret\n"
+".align 16\n"
+"2:\n"
+" xor %ecx,%ecx\n" /* tail call to mc_LOADVn_slow(a, 64, 0) */
+" mov $64,%edx\n"
+" jmp mc_LOADVn_slow\n"
+".size vgMemCheck_helperc_LOADV64le, .-vgMemCheck_helperc_LOADV64le\n"
+".previous\n"
+);
+#else
VG_REGPARM(1) ULong MC_(helperc_LOADV64le) ( Addr a )
{
return mc_LOADV64(a, False);
}
+#endif
static INLINE
@@ -4586,8 +4626,43 @@ __asm__( /* Derived from NCode template */
".previous\n"
);
+#elif ENABLE_ASSEMBLY_HELPERS && defined(PERF_FAST_LOADV) \
+ && defined(VGP_x86_linux)
+__asm__(
+".text\n"
+".align 16\n"
+".global vgMemCheck_helperc_LOADV32le\n"
+".type vgMemCheck_helperc_LOADV32le, @function\n"
+"vgMemCheck_helperc_LOADV32le:\n"
+" test $0x3, %al\n"
+" jnz 2f\n" /* jump if misaligned */
+" mov %eax, %edx\n"
+" shr $16, %edx\n"
+" mov primary_map(,%edx,4), %ecx\n"
+" movzwl %ax, %edx\n"
+" shr $2,%edx\n"
+" movzbl (%ecx,%edx,1),%edx\n"
+" cmp $0xaa, %dl\n" /* compare to VA_BITS8_DEFINED */
+" jne 1f\n" /* jump if not completely defined */
+" xor %eax, %eax\n" /* else return V_BITS32_DEFINED */
+" ret\n"
+".align 16\n"
+"1:\n"
+" cmp $0x55, %dl\n" /* compare to VA_BITS8_UNDEFINED */
+" jne 2f\n" /* jump if not completely undefined */
+" or $0xffffffff, %eax\n" /* else return 0xffffffff == V_BITS32_UNDEFINED */
+" ret\n"
+".align 16\n"
+"2:\n"
+" xor %ecx, %ecx\n" /* tail call mc_LOADVn_slow(a, 32, 0) */
+" mov $32, %edx\n"
+" jmp mc_LOADVn_slow\n"
+".size vgMemCheck_helperc_LOADV32le, .-vgMemCheck_helperc_LOADV32le\n"
+".previous\n"
+);
+
#else
-// Generic for all platforms except arm32-linux
+// Generic for all platforms
VG_REGPARM(1) UWord MC_(helperc_LOADV32le) ( Addr a )
{
return mc_LOADV32(a, False);
@@ -4762,8 +4837,55 @@ __asm__( /* Derived from NCode template */
".previous\n"
);
+#elif ENABLE_ASSEMBLY_HELPERS && defined(PERF_FAST_LOADV) \
+ && defined(VGP_x86_linux)
+__asm__(
+".text\n"
+".align 16\n"
+".global vgMemCheck_helperc_LOADV16le\n"
+".type vgMemCheck_helperc_LOADV16le, @function\n"
+"vgMemCheck_helperc_LOADV16le:\n"
+" test $0x1,%al\n"
+" jnz 5f\n" /* jump if not aligned */
+" mov %eax,%edx\n"
+" shr $0x10,%edx\n"
+" mov primary_map(,%edx,4),%ecx\n"
+" movzwl %ax,%edx\n"
+" shr $0x2,%edx\n"
+" movzbl (%ecx,%edx,1),%edx\n" /* dl = VA bits for 32bit */
+" cmp $0xaa,%dl\n" /* compare to VA_BITS8_DEFINED */
+" jne 2f\n" /* jump if not all 32bits defined */
+"1:\n"
+" mov $0xffff0000,%eax\n" /* V_BITS16_DEFINED | top16safe */
+" ret\n"
+".align 16\n"
+"2:\n"
+" cmp $0x55,%dl\n" /* compare to VA_BITS8_UNDEFINED */
+" jne 4f\n" /* jump if not all 32bits undefined */
+"3:\n"
+" or $0xffffffff,%eax\n" /* V_BITS16_UNDEFINED | top16safe */
+" ret\n"
+".align 16\n"
+"4:\n"
+" mov %eax,%ecx\n"
+" and $0x2,%ecx\n"
+" shl $1,%ecx\n"
+" sar %cl,%dl\n"
+" and $0xf,%dl\n"
+" cmp $0xa,%dl\n"
+" je 1b\n" /* jump if all 16bits are defined */
+" cmp $0x5,%dl\n"
+" je 3b\n" /* jump if all 16bits are undefined */
+"5:\n"
+" xor %ecx,%ecx\n" /* tail call mc_LOADVn_slow(a, 16, 0) */
+" mov $16,%edx\n"
+" jmp mc_LOADVn_slow\n"
+".size vgMemCheck_helperc_LOADV16le, .-vgMemCheck_helperc_LOADV16le \n"
+".previous\n"
+);
+
#else
-// Generic for all platforms except arm32-linux
+// Generic for all platforms except x86 and arm32-linux
VG_REGPARM(1) UWord MC_(helperc_LOADV16le) ( Addr a )
{
return mc_LOADV16(a, False);
@@ -4904,8 +5026,53 @@ __asm__( /* Derived from NCode template */
".previous\n"
);
+/* Non-generic assembly for x86-linux */
+#elif ENABLE_ASSEMBLY_HELPERS && defined(PERF_FAST_LOADV) \
+ && defined(VGP_x86_linux)
+__asm__(
+".text\n"
+".align 16\n"
+".global vgMemCheck_helperc_LOADV8\n"
+".type vgMemCheck_helperc_LOADV8, @function\n"
+"vgMemCheck_helperc_LOADV8:\n"
+" mov %eax,%edx\n"
+" shr $0x10,%edx\n"
+" mov primary_map(,%edx,4),%ecx\n"
+" movzwl %ax,%edx\n"
+" shr $0x2,%edx\n"
+" movzbl (%ecx,%edx,1),%edx\n" /* dl = VA bits for 32bit */
+" cmp $0xaa,%dl\n" /* compara to VA_BITS8_DEFINED? */
+" jne 2f\n" /* jump if not defined */
+"1:\n"
+" mov $0xffffff00,%eax\n" /* V_BITS8_DEFINED | top24safe */
+" ret\n"
+".align 16\n"
+"2:\n"
+" cmp $0x55,%dl\n" /* compare to VA_BITS8_UNDEFINED */
+" jne 4f\n" /* jump if not all 32bits are undefined */
+"3:\n"
+" or $0xffffffff,%eax\n" /* V_BITS8_UNDEFINED | top24safe */
+" ret\n"
+".align 16\n"
+"4:\n"
+" mov %eax,%ecx\n"
+" and $0x3,%ecx\n"
+" shl $1,%ecx\n"
+" sar %cl,%dl\n"
+" and $0x3,%dl\n"
+" cmp $0x2,%dl\n"
+" je 1b\n" /* jump if all 8bits are defined */
+" cmp $0x1,%dl\n"
+" je 3b\n" /* jump if all 8bits are undefined */
+" xor %ecx,%ecx\n" /* tail call to mc_LOADVn_slow(a, 8, 0) */
+" mov $0x8,%edx\n"
+" jmp mc_LOADVn_slow\n"
+".size vgMemCheck_helperc_LOADV8, .-vgMemCheck_helperc_LOADV8\n"
+".previous\n"
+);
+
#else
-// Generic for all platforms except arm32-linux
+// Generic for all platforms
VG_REGPARM(1)
UWord MC_(helperc_LOADV8) ( Addr a )
{
--
2.4.3
|