mono.git
9 years ago[MWF] Fix bug in DataGridViewRowCollection Clear() introduced by recent commit
Alexander Köplinger [Thu, 27 Nov 2014 04:29:32 +0000 (05:29 +0100)]
[MWF] Fix bug in DataGridViewRowCollection Clear() introduced by recent commit

7d1b878fbf13462a282860c6d1dd493a48d7b1eb altered the behavior of removing rows, breaking
the DataGridViewRowCollectionTest.ClearRows () test

Before the change, this is what happened when the list was cleared
(the number in brackets is the value of the Index property of the DataGridViewRow):

[0]  Remove   [1]  ReIndex  [0] Remove  [1] ReIndex  [0]
[1] --------> [2] --------> [1] ------> [2] -------> [1]  ...
[2]           [3]           [2]
[3]

After the offending commit, ReIndex is only called after the list is cleared, which means
the Index property of the rows is never updated (as there are no items in the list).

The fix is to explicitly set the Index of each row to 0.
This was the end result before the commit anyway, so we can omit the ReIndex call entirely.

9 years ago[system.net.http] Update range checks for invalid characters. Fixes #18800
Marek Safar [Thu, 27 Nov 2014 10:56:47 +0000 (11:56 +0100)]
[system.net.http] Update range checks for invalid characters. Fixes #18800

9 years agoFix "make dist" error caused by renamed sgen-marksweep-drain-gray-stack.h
Jo Shields [Thu, 27 Nov 2014 09:20:39 +0000 (09:20 +0000)]
Fix "make dist" error caused by renamed sgen-marksweep-drain-gray-stack.h

9 years agoFix build (SHARED_EXT was renamed to MONO_SOLIB_EXT in 4342bce4412bdd5fc70efcf9d055e2...
Alexander Köplinger [Thu, 27 Nov 2014 02:20:56 +0000 (03:20 +0100)]
Fix build (SHARED_EXT was renamed to MONO_SOLIB_EXT in 4342bce4412bdd5fc70efcf9d055e23a7a908b64)

9 years ago[system.net.http] Escape more RFC5987 characters. Fixes #24785
Marek Safar [Thu, 27 Nov 2014 08:05:52 +0000 (09:05 +0100)]
[system.net.http] Escape more RFC5987 characters. Fixes #24785

9 years agoMerge pull request #1430 from akoeplinger/readme
Miguel de Icaza [Thu, 27 Nov 2014 03:17:23 +0000 (22:17 -0500)]
Merge pull request #1430 from akoeplinger/readme

Improve README.md and focus on relevant content

9 years agoMerge pull request #1319 from directhex/systemwide-per-arch-aot-cache
Alex Rønne Petersen [Thu, 27 Nov 2014 00:28:49 +0000 (01:28 +0100)]
Merge pull request #1319 from directhex/systemwide-per-arch-aot-cache

Add a third AOT location, alongside ~/.mono/aot-cache and the assembly dir

9 years agoImprove README.md and focus on relevant content
Alexander Köplinger [Sun, 23 Nov 2014 22:28:31 +0000 (23:28 +0100)]
Improve README.md and focus on relevant content

Before, the first thing the user saw were instructions for niche platforms like Itanium or Solaris.
Instead, we now just link to the "Compiling Mono" guides for OSX, Linux and Windows on the Mono website.

Additionally, a bunch of instructions were outdated / no longer relevant, updated those.

The "Configuration options" section was moved to the bottom of the readme, it was pretty long and pushed
the other sections into oblivion.

9 years agoMerge pull request #1407 from chrisvire/bug-24587
Alex Rønne Petersen [Wed, 26 Nov 2014 23:43:18 +0000 (00:43 +0100)]
Merge pull request #1407 from chrisvire/bug-24587

[MWF] Fix focus issue when removing last item in ListView

9 years agoMerge pull request #1424 from akoeplinger/remove-enable-nunit-tests
Alex Rønne Petersen [Wed, 26 Nov 2014 23:41:29 +0000 (00:41 +0100)]
Merge pull request #1424 from akoeplinger/remove-enable-nunit-tests

Remove --enable-nunit-tests option from build system

9 years ago[mcs] Remove declaration expression named argument parsing (not part of the language...
Marek Safar [Wed, 26 Nov 2014 21:57:58 +0000 (22:57 +0100)]
[mcs] Remove declaration expression named argument parsing (not part of the language yet). Fixes #24784

9 years ago[sgen] Fix concurrent M&S.
Mark Probst [Wed, 26 Nov 2014 21:52:27 +0000 (13:52 -0800)]
[sgen] Fix concurrent M&S.

9 years agoBump referencesource to fix mobile profile compilation of System.ComponentModel.DataA...
Sebastien Pouliot [Wed, 26 Nov 2014 21:26:35 +0000 (16:26 -0500)]
Bump referencesource to fix mobile profile compilation of System.ComponentModel.DataAnnotations

9 years agoFix mobile build wrt System.Core changes
Sebastien Pouliot [Wed, 26 Nov 2014 21:00:57 +0000 (16:00 -0500)]
Fix mobile build wrt System.Core changes

9 years ago[System] Make it build with the MonoTouch profile
Miguel de Icaza [Wed, 26 Nov 2014 19:43:25 +0000 (14:43 -0500)]
[System] Make it build with the MonoTouch profile

9 years agoDrop dead notes/code
Miguel de Icaza [Mon, 24 Nov 2014 17:40:10 +0000 (12:40 -0500)]
Drop dead notes/code

9 years agoFixes build
Marek Safar [Wed, 26 Nov 2014 18:54:35 +0000 (19:54 +0100)]
Fixes build

9 years ago[sgen] Use all 3 lower vtable bits on 32 bits.
Mark Probst [Wed, 26 Nov 2014 01:23:14 +0000 (17:23 -0800)]
[sgen] Use all 3 lower vtable bits on 32 bits.

We can't actually use the trick of setting both the pinned and forwarded
bits to indicate cemented objects because the Tarjan bridge requires those
two bits never be set at the same time.

9 years ago[sgen] Align vtable pointers to 8 bytes on 32 bits, too.
Mark Probst [Tue, 25 Nov 2014 20:26:22 +0000 (12:26 -0800)]
[sgen] Align vtable pointers to 8 bytes on 32 bits, too.

9 years ago[sgen] Mempool allocations should be 8 byte aligned. Fix this on 32 bits.
Mark Probst [Tue, 25 Nov 2014 20:08:27 +0000 (12:08 -0800)]
[sgen] Mempool allocations should be 8 byte aligned.  Fix this on 32 bits.

The `MonoMemPool` struct is not a multiple of 8 bytes large, so we need
to align up to get the actual start of the pool data.

9 years ago[sgen] Remove unused defines.
Mark Probst [Mon, 24 Nov 2014 20:40:39 +0000 (12:40 -0800)]
[sgen] Remove unused defines.

9 years ago[sgen] Document descriptor types in comment.
Mark Probst [Mon, 17 Nov 2014 22:52:03 +0000 (14:52 -0800)]
[sgen] Document descriptor types in comment.

9 years ago[sgen] Symbolic constants for pointer-free descriptor types.
Mark Probst [Mon, 17 Nov 2014 22:51:31 +0000 (14:51 -0800)]
[sgen] Symbolic constants for pointer-free descriptor types.

9 years ago[sgen] Separate descriptor type enums.
Mark Probst [Mon, 17 Nov 2014 22:50:59 +0000 (14:50 -0800)]
[sgen] Separate descriptor type enums.

9 years ago[sgen] Use a symbolic constant for the descriptor type mask.
Mark Probst [Mon, 17 Nov 2014 22:49:05 +0000 (14:49 -0800)]
[sgen] Use a symbolic constant for the descriptor type mask.

9 years ago[sgen] Rename `LARGE_BITMAP` to `BITMAP`.
Mark Probst [Mon, 17 Nov 2014 22:28:31 +0000 (14:28 -0800)]
[sgen] Rename `LARGE_BITMAP` to `BITMAP`.

There's only one bitmap descriptor type left and no need to
distinguish between large and small.

9 years ago[sgen] Use `guint64` for most counters, not `long long`.
Mark Probst [Thu, 20 Nov 2014 21:45:23 +0000 (13:45 -0800)]
[sgen] Use `guint64` for most counters, not `long long`.

9 years ago[sgen] Fix cementing tag bit on 32 bits.
Mark Probst [Wed, 22 Oct 2014 18:30:46 +0000 (11:30 -0700)]
[sgen] Fix cementing tag bit on 32 bits.

We used the third-lowest vtable bit to tag cemented objects.  On 32 bits,
vtables are only 4-byte aligned so we have to make do with 2 bits.

9 years ago[sgen] Remove DESCRIPTOR_FAST_PATH option - don't use it.
Mark Probst [Tue, 21 Oct 2014 22:59:39 +0000 (15:59 -0700)]
[sgen] Remove DESCRIPTOR_FAST_PATH option - don't use it.

We're removing options that we've introduced for experimentation but that
didn't pan out.

9 years ago[sgen] Remove MARK_ON_ENQUEUE option - always use it now.
Mark Probst [Tue, 21 Oct 2014 22:52:53 +0000 (15:52 -0700)]
[sgen] Remove MARK_ON_ENQUEUE option - always use it now.

We're removing options that we've introduced for experimentation but that
didn't pan out.

9 years ago[sgen] Remove GRAY_QUEUE_HAVE_DESCRIPTORS option - always use it now.
Mark Probst [Tue, 21 Oct 2014 22:46:39 +0000 (15:46 -0700)]
[sgen] Remove GRAY_QUEUE_HAVE_DESCRIPTORS option - always use it now.

We're removing options that we've introduced for experimentation but that
didn't pan out.

9 years ago[sgen] Remove USE_PREFETCH_QUEUE option - don't use it.
Mark Probst [Tue, 21 Oct 2014 22:43:04 +0000 (15:43 -0700)]
[sgen] Remove USE_PREFETCH_QUEUE option - don't use it.

We're removing options that we've introduced for experimentation but that
didn't pan out.

9 years ago[sgen] Remove BLOCK_INFO_IN_HEADER option - always use it now.
Mark Probst [Tue, 21 Oct 2014 22:39:24 +0000 (15:39 -0700)]
[sgen] Remove BLOCK_INFO_IN_HEADER option - always use it now.

We're removing options that we've introduced for experimentation but that
didn't pan out.

9 years ago[sgen] Use a smaller slot size scaling factor.
Mark Probst [Wed, 15 Oct 2014 21:24:10 +0000 (17:24 -0400)]
[sgen] Use a smaller slot size scaling factor.

The factor we used previously gave us object sizes in increments that made
some benchmarks use quite a lot more memory than necessary.  In particular,
we didn't have a size for 24 byte objects (on 64 bits), just for 16 and 32.

9 years ago[sgen] Make block size fastenable.
Mark Probst [Sat, 11 Oct 2014 16:18:22 +0000 (09:18 -0700)]
[sgen] Make block size fastenable.

9 years ago[sgen] Fix card scanning with larger block sizes.
Mark Probst [Fri, 10 Oct 2014 19:17:38 +0000 (12:17 -0700)]
[sgen] Fix card scanning with larger block sizes.

The card scanning code assumed that the size of the block header is less
than the size of a card.  If we put the block info into the header and increase
the block size enough, that assumption isn't true anymore, because the
mark bits take up space in proportion to the block size.

9 years ago[sgen] Experimental pre-fetch scan fast-path.
Mark Probst [Thu, 9 Oct 2014 18:55:30 +0000 (11:55 -0700)]
[sgen] Experimental pre-fetch scan fast-path.

The idea here is to first extract all the references within an object
and then to process them, pre-fetching the objects they point to a few
steps ahead.

9 years ago[sgen] Fix build for mark-on-dequeue.
Mark Probst [Wed, 8 Oct 2014 21:26:52 +0000 (14:26 -0700)]
[sgen] Fix build for mark-on-dequeue.

9 years ago[sgen] Nicer visualization of concurrent collector pauses in gcpausevis.py.
Mark Probst [Wed, 8 Oct 2014 19:28:57 +0000 (12:28 -0700)]
[sgen] Nicer visualization of concurrent collector pauses in gcpausevis.py.

9 years ago[sgen] Separate binary protocol entries for concurrent update and finish.
Mark Probst [Tue, 7 Oct 2014 20:54:36 +0000 (13:54 -0700)]
[sgen] Separate binary protocol entries for concurrent update and finish.

9 years ago[sgen] Flush binary protocol buffers after unloading a domain.
Mark Probst [Tue, 7 Oct 2014 20:53:50 +0000 (13:53 -0700)]
[sgen] Flush binary protocol buffers after unloading a domain.

When the runtime shuts down the last thing the GC usually hears about it
is that the root domain is unloaded.  If we don't flush the binary protocol
buffers at that point, we lose entries.

9 years ago[sgen] Fix build on C99.
Mark Probst [Tue, 7 Oct 2014 00:13:31 +0000 (17:13 -0700)]
[sgen] Fix build on C99.

9 years ago[sgen] Fix build with heavy statistics.
Mark Probst [Tue, 7 Oct 2014 00:11:50 +0000 (17:11 -0700)]
[sgen] Fix build with heavy statistics.

9 years ago[sgen] Rename sgen-major-scan-object.h to sgen-marksweep-scan-object-concurrent.h.
Mark Probst [Sun, 5 Oct 2014 03:13:41 +0000 (20:13 -0700)]
[sgen] Rename sgen-major-scan-object.h to sgen-marksweep-scan-object-concurrent.h.

9 years ago[sgen] Remove some dead code in sgen-major-scan-object.h.
Mark Probst [Sun, 5 Oct 2014 03:03:53 +0000 (20:03 -0700)]
[sgen] Remove some dead code in sgen-major-scan-object.h.

9 years ago[sgen] Unify scanning code a bit.
Mark Probst [Sat, 4 Oct 2014 23:42:27 +0000 (16:42 -0700)]
[sgen] Unify scanning code a bit.

We still have two separate implementations of the scanning code: The optimized
one and the old one.  The old one is still needed because it supports the concurrent
collector.  For the non-concurrent collector we can now use the optimized
implementation, however.

9 years ago[sgen] Add/fix some assertions.
Mark Probst [Sat, 4 Oct 2014 23:03:34 +0000 (16:03 -0700)]
[sgen] Add/fix some assertions.

9 years ago[sgen] Add some missing binary protocol invocations.
Mark Probst [Sat, 4 Oct 2014 23:02:41 +0000 (16:02 -0700)]
[sgen] Add some missing binary protocol invocations.

9 years ago[sgen] New protocol entry for processing of individual reference.
Mark Probst [Sat, 4 Oct 2014 22:53:27 +0000 (15:53 -0700)]
[sgen] New protocol entry for processing of individual reference.

9 years ago[sgen] In binary protocol grep, gray en-/dequeue must not always match.
Mark Probst [Sat, 4 Oct 2014 22:44:27 +0000 (15:44 -0700)]
[sgen] In binary protocol grep, gray en-/dequeue must not always match.

9 years ago[sgen] Remove binary protocol entry for null dequeue.
Mark Probst [Sat, 4 Oct 2014 22:43:48 +0000 (15:43 -0700)]
[sgen] Remove binary protocol entry for null dequeue.

9 years ago[sgen] Fix build on highest debug level.
Mark Probst [Sat, 4 Oct 2014 22:43:00 +0000 (15:43 -0700)]
[sgen] Fix build on highest debug level.

9 years ago[sgen] Handle copy object failure.
Mark Probst [Thu, 2 Oct 2014 23:56:00 +0000 (16:56 -0700)]
[sgen] Handle copy object failure.

This is just a verbatim copy of the old code.  It's unlikely it's ever
been tested, though.

9 years ago[sgen] Increase debug level of assertions in inner loops.
Mark Probst [Thu, 2 Oct 2014 23:55:39 +0000 (16:55 -0700)]
[sgen] Increase debug level of assertions in inner loops.

9 years ago[sgen] Remove dead code.
Mark Probst [Thu, 2 Oct 2014 23:47:05 +0000 (16:47 -0700)]
[sgen] Remove dead code.

This was still left from the parallel collector.

9 years ago[sgen] Fix build with prefetch queue enabled.
Mark Probst [Thu, 25 Sep 2014 21:56:30 +0000 (14:56 -0700)]
[sgen] Fix build with prefetch queue enabled.

9 years ago[sgen] Make new M&S parameters fastenable.
Mark Probst [Tue, 23 Sep 2014 23:45:44 +0000 (16:45 -0700)]
[sgen] Make new M&S parameters fastenable.

Fasten is a small tool for optimizing compile-time options:

    https://github.com/evincarofautumn/fasten

It does that by parsing source files for numbers that have been marked
as "fastenable", and fiddling around with them.  We do this for all
the new optimizations.

9 years ago[sgen] Support evacuation in the optimized mark/scan loop.
Mark Probst [Tue, 16 Sep 2014 09:25:52 +0000 (11:25 +0200)]
[sgen] Support evacuation in the optimized mark/scan loop.

We actually implement two separate mark/scan loops: One that doesn't
support evacuation and one that does.  We dynamically choose which one
to use.  The evacuation-less loop is faster, so we use it whenever we can.

9 years ago[sgen] Move drain_gray_stack() to copy/mark header file, too.
Mark Probst [Tue, 16 Sep 2014 09:07:09 +0000 (11:07 +0200)]
[sgen] Move drain_gray_stack() to copy/mark header file, too.

This inlines the scan/copy functions, so if we duplicate them we need
to duplicate this, too.

9 years ago[sgen] Remove old copy/mark function.
Mark Probst [Tue, 16 Sep 2014 08:23:20 +0000 (10:23 +0200)]
[sgen] Remove old copy/mark function.

The new, optimized function can now do everything the old one did, so
let's get rid of it.

9 years ago[sgen] Move copy/mark function into separate header file.
Mark Probst [Sun, 5 Oct 2014 00:10:21 +0000 (17:10 -0700)]
[sgen] Move copy/mark function into separate header file.

So we can later include them twice, once with support for evacuation
and once without.

9 years ago[sgen] Support evacuation again.
Mark Probst [Tue, 16 Sep 2014 08:02:56 +0000 (10:02 +0200)]
[sgen] Support evacuation again.

The performance impact of this is significant, so we will later make
two separate scan functions: one with evacuation and one without.

9 years ago[sgen] Support split nursery again.
Mark Probst [Tue, 16 Sep 2014 08:01:05 +0000 (10:01 +0200)]
[sgen] Support split nursery again.

This might degrade performance, in which case we'll special-case it
later on.

9 years ago[sgen] Unify the two small object mark cases again.
Mark Probst [Mon, 15 Sep 2014 09:07:56 +0000 (11:07 +0200)]
[sgen] Unify the two small object mark cases again.

The only difference between these two cases was that we used to
different heavy statistics counters.  We can do that within a single
case.

9 years ago[sgen] Use MS_MARK_OBJECT_AND_ENQUEUE where we expanded it previously.
Mark Probst [Mon, 15 Sep 2014 09:05:00 +0000 (11:05 +0200)]
[sgen] Use MS_MARK_OBJECT_AND_ENQUEUE where we expanded it previously.

It's still the same code, so use the macro directly.

9 years ago[sgen] Always inline the optimized copy function.
Mark Probst [Thu, 11 Sep 2014 10:36:12 +0000 (12:36 +0200)]
[sgen] Always inline the optimized copy function.

This is a huge win for some benchmarks.

9 years ago[sgen] Never fall back to the old copy function.
Mark Probst [Thu, 11 Sep 2014 10:35:29 +0000 (12:35 +0200)]
[sgen] Never fall back to the old copy function.

9 years ago[sgen] Use scanning macro in optimized loop.
Mark Probst [Wed, 10 Sep 2014 10:16:06 +0000 (12:16 +0200)]
[sgen] Use scanning macro in optimized loop.

We expanded this macro previously, but it's still the same code, so
use the macro directly.

9 years ago[sgen] New SMALL_PTRFREE descriptor type for faster has_references checking.
Mark Probst [Wed, 10 Sep 2014 10:08:08 +0000 (12:08 +0200)]
[sgen] New SMALL_PTRFREE descriptor type for faster has_references checking.

We use 3 to denote SMALL_PTRFREE, and 7 for COMPLEX_PTRFREE, so we can
check for both simply with ((desc & 3) == 3).

9 years ago[sgen] Only enqueue objects with references.
Mark Probst [Wed, 10 Sep 2014 09:45:39 +0000 (11:45 +0200)]
[sgen] Only enqueue objects with references.

9 years ago[sgen] Look at descriptor, not block, to see whether object has references.
Mark Probst [Wed, 10 Sep 2014 09:27:59 +0000 (11:27 +0200)]
[sgen] Look at descriptor, not block, to see whether object has references.

9 years ago[sgen] Special descriptor encoding for strings.
Mark Probst [Mon, 8 Sep 2014 12:26:57 +0000 (14:26 +0200)]
[sgen] Special descriptor encoding for strings.

The complex pointer-free type carries no additional information.  We use its
data to mark strings so we can determine object size quicker.

9 years ago[sgen] Faster generic large bitmap scanning if CTZ builtin is available.
Mark Probst [Mon, 8 Sep 2014 12:23:00 +0000 (14:23 +0200)]
[sgen] Faster generic large bitmap scanning if CTZ builtin is available.

9 years ago[sgen] Remove small bitmap descriptor type.
Mark Probst [Mon, 8 Sep 2014 10:40:10 +0000 (12:40 +0200)]
[sgen] Remove small bitmap descriptor type.

The reason for having a small bitmap was that we could encode the object
size in the descriptor.  The main attraction for having object size handy is that
we can quickly check whether an object is in the small object major heap or
in the LOS.  We solve this problem by always using complex descriptor types
for large objects, so now we can tell whether an object is small just by looking
at the descriptor type.

9 years ago[sgen] Heavy statistics on copied object descriptors.
Mark Probst [Sun, 7 Sep 2014 16:41:39 +0000 (18:41 +0200)]
[sgen] Heavy statistics on copied object descriptors.

9 years ago[sgen] Heavy statistic counter for scanning of no-ref objects.
Mark Probst [Sun, 7 Sep 2014 13:06:15 +0000 (15:06 +0200)]
[sgen] Heavy statistic counter for scanning of no-ref objects.

9 years ago[sgen] Use HANDLE_PTR in the fast-path, too.
Mark Probst [Sun, 7 Sep 2014 12:59:32 +0000 (14:59 +0200)]
[sgen] Use HANDLE_PTR in the fast-path, too.

We had just expanded the macro verbatim and never changed it, so
there's no point in not using it directly.

9 years ago[sgen] Optional scanning without the small bitmap fast path.
Mark Probst [Fri, 5 Sep 2014 19:11:02 +0000 (21:11 +0200)]
[sgen] Optional scanning without the small bitmap fast path.

To experiment with different optimization combinations.

9 years ago[sgen] Fix heavy statistics in mark-scan loop.
Mark Probst [Fri, 5 Sep 2014 18:59:37 +0000 (20:59 +0200)]
[sgen] Fix heavy statistics in mark-scan loop.

9 years ago[sgen] Limit run-length descriptors to small object size, too.
Mark Probst [Fri, 5 Sep 2014 18:57:04 +0000 (20:57 +0200)]
[sgen] Limit run-length descriptors to small object size, too.

To identify more small objects quicker.

Since we now use the runl-length descriptor types to indicate object
size as well, and strings can have any size, we can't use that type
for strings anymore, so we use the complex type which forces us to
look up its size to determine whether it's a small or large object.

9 years ago[sgen] Make mark on enqueue vs dequeue configurable.
Mark Probst [Fri, 5 Sep 2014 09:46:18 +0000 (11:46 +0200)]
[sgen] Make mark on enqueue vs dequeue configurable.

So we can experiment with a variety of optimization configurations.

9 years ago[sgen] Make block info in header optional.
Mark Probst [Wed, 3 Sep 2014 02:36:07 +0000 (19:36 -0700)]
[sgen] Make block info in header optional.

So we can experiment with a variety of optimization configurations.

9 years ago[sgen] Tag cemented objects so we don't have to go through the hash.
Mark Probst [Wed, 3 Sep 2014 02:20:53 +0000 (19:20 -0700)]
[sgen] Tag cemented objects so we don't have to go through the hash.

We can do the cemented check faster by using the third vtable bit to
tag cemented objects (in addition to the pinned bit).  In workloads
that are heavy on cementing (like `lcscbench` or `perimeter`) this
significantly increases performance.

9 years ago[sgen] Prefetch mark bits, not block start.
Mark Probst [Fri, 29 Aug 2014 23:48:04 +0000 (16:48 -0700)]
[sgen] Prefetch mark bits, not block start.

When prefetching, we calculate which mark bits we need and prefetch
those for writing.  The object itself we prefetch for reading.

9 years ago[sgen] Put block info into blocks.
Mark Probst [Fri, 29 Aug 2014 23:28:49 +0000 (16:28 -0700)]
[sgen] Put block info into blocks.

Another experiment: What if we put the whole block info into the block
itself, not just a pointer to it.  There's one less indirection we
need to do.  On the other hand, many of them will share the same cache
lines.  So do the pointers to the block infos, though.

9 years ago[sgen] Bring mark-scan loop stats up to date.
Mark Probst [Fri, 29 Aug 2014 23:27:49 +0000 (16:27 -0700)]
[sgen] Bring mark-scan loop stats up to date.

9 years ago[sgen] Also prefetch the (potential) block header.
Mark Probst [Fri, 29 Aug 2014 21:58:12 +0000 (14:58 -0700)]
[sgen] Also prefetch the (potential) block header.

When we scan a small object in the major heap we have to read the
block header of its block.  It makes sense to prefetch that as well,
in addition to the object itself.

9 years ago[sgen] Count scanned objects.
Mark Probst [Thu, 14 Aug 2014 19:26:10 +0000 (12:26 -0700)]
[sgen] Count scanned objects.

9 years ago[sgen] Mark on dequeue, not enqueue.
Mark Probst [Thu, 14 Aug 2014 22:33:40 +0000 (15:33 -0700)]
[sgen] Mark on dequeue, not enqueue.

This is another experiment.

When marking on enqueue, what we need to do is look at the object
we're about to enqueue, to check whether it's a small or large object.
Then, when we dequeue to scan, we look at the object again, so we
essentially fetch each live object header twice.

With mark on dequeue, when we encounter a pointer we always enqueue
it, without even looking at the object.  Only when we dequeue do we
figure out whether it's marked yet, and thus whether we need to scan
it.

9 years ago[sgen] Make enqueuing descriptors compile-time optional.
Mark Probst [Fri, 29 Aug 2014 00:22:50 +0000 (17:22 -0700)]
[sgen] Make enqueuing descriptors compile-time optional.

We want to test this in combination with other changes, so we make
each of them configurable.

9 years ago[sgen] Make prefetch queue compile-time optional.
Mark Probst [Thu, 28 Aug 2014 23:47:45 +0000 (16:47 -0700)]
[sgen] Make prefetch queue compile-time optional.

We want to benchmark the prefetch queue in combination with other
changes, so we make each of them configurable.

9 years ago[sgen] Prefetch queue for optimized mark/scan loop.
Mark Probst [Thu, 28 Aug 2014 23:38:51 +0000 (16:38 -0700)]
[sgen] Prefetch queue for optimized mark/scan loop.

We put a short FIFO between the gray stack and the actual scanning, to
be able to prefetch objects ahead of time, with an adjustable delay.

9 years ago[sgen] Optimized mark/scan loop for major collections.
Mark Probst [Wed, 27 Aug 2014 23:23:22 +0000 (16:23 -0700)]
[sgen] Optimized mark/scan loop for major collections.

The basic idea here is to make a loop that combines dequeuing from the
gray queue, scanning and marking/copying/enqueuing, with redundancies
removed and special-casing of the common case.

We make the small bitmap type descriptor only apply to small (as
opposed to LOS) objects so that we can quickly check in that case
whether an object is in the LOS or not without actually looking up its
size.

We disable evacuation and the split nursery because the code doesn't
support them yet.

9 years ago[gc] Remove the `new object count` counter, because it's useless.
Mark Probst [Wed, 27 Aug 2014 21:35:06 +0000 (14:35 -0700)]
[gc] Remove the `new object count` counter, because it's useless.

Without heavy statistics it counts almost no objects, and even with
heavy statistics turned on, it doesn't count everything.  SGen has an
accurate counter when heavy statistics are turned on.

9 years ago[sgen] Fix build with binary protocol.
Mark Probst [Wed, 1 Oct 2014 20:25:42 +0000 (13:25 -0700)]
[sgen] Fix build with binary protocol.

9 years agoMerge pull request #1426 from ignacionr/webclient-delay-file-creation
Miguel de Icaza [Wed, 26 Nov 2014 18:06:24 +0000 (13:06 -0500)]
Merge pull request #1426 from ignacionr/webclient-delay-file-creation

Webclient delay file creation

9 years ago[corlib] Implement ExecutionContext flow for async infrastructure. Fixes #24757
Marek Safar [Wed, 26 Nov 2014 17:47:32 +0000 (18:47 +0100)]
[corlib] Implement ExecutionContext flow for async infrastructure. Fixes #24757

9 years agoMerge pull request #1398 from jwestfall69/dgv-first_row_index
Miguel de Icaza [Wed, 26 Nov 2014 18:02:16 +0000 (13:02 -0500)]
Merge pull request #1398 from jwestfall69/dgv-first_row_index

[MWF] DataGridView: ensure first_row_index will be valid after row removal

9 years agoMerge pull request #1396 from jwestfall69/dgvrc-clear-speedup
Miguel de Icaza [Wed, 26 Nov 2014 18:01:51 +0000 (13:01 -0500)]
Merge pull request #1396 from jwestfall69/dgvrc-clear-speedup

[MWF] DataGridViewRowCollection Clear() speed up

9 years agoBump the version.
Rodrigo Kumpera [Wed, 26 Nov 2014 16:20:45 +0000 (11:20 -0500)]
Bump the version.