Permalink
Switch branches/tags
Commits on May 8, 2014
Commits on May 6, 2014
  1. [sgen-bridge] Add the tarjan-coloring bridge.

    kumpera committed May 1, 2014
    The tarjan-coloring bridge is significant departure from the old bridge. It's design is based
    on the Tarjan Strongly Connected Component algorithm.
    
    SCC links are calculated as part of the Tarjan dfs on the second scan to calculate the low index and
    form the components.
    
    The algorithm does inspect all children after they have been processed, which enables us to do backward
    propagation of the reachable SCCs.
    
    In order to avoid the xref mess of the old algorithm, we color each component based on the sum of all
    reachable components (colors). This means no matter how many non-bridge objects are in between two bridges,
    they will all receive the same color and be represented in the final output as a single node in the SCC
    graph.
    
    This allows for a reasonably compact output graph as it will only include colors with no bridges when
    a single object has multiple bridges reachable.
    
    Said that, the basic algorithm received a series of optimizations:
    
    1)Flag based merging, great idea from Mark, it bounds color and xref merging to be linear on the number of
    colors found.
    
    2)Objects and Colors bucket allocation. Instead of using expansible arrays we use fixed size buckets that
    form a linked list. This allow us to use direct pointers instead of indexes. It avoid the expensive expansions.
    Another benefit is that it reduces the work by sgen's malloc, which can be really slow.
    
    3)Replace the object hash table with header patching. We tag objects with both pinning and forwarded bits and
    store a pointer in the lock word. This eliminates the hashtable, a big source of perf issues. Patching objects
    back at the end of bridge processing is much much cheaper than free'ing all the hashtable entries.
    
    4)Color deduplication. It's possible to produce duplicated colors due to mutually unreachable paths that
    both points to the same set of bridges. A cache is introduced to reduce it for colors points to 2 or 3 others.
    
    The way we build colors allow us in the future to fix the hub object problem (SetupDoubleFan).
    
    Experimental results with sgen-bridge-pathologies shows this implementation been 2-3x faster than the new one.
  2. Merge pull request #1010 from davidmoore1/bug-19304

    migueldeicaza committed May 6, 2014
    Prevent call to OwnerLostFocusHandler for disposed object
  3. Merge pull request #992 from ludovic-henry/ludovic-counters-pr1

    kumpera committed May 6, 2014
    [counters] Add sample and accessors to mono counters API
  4. [mcs] Emit null constant value for default parameters of generic type…

    marek-safar committed May 6, 2014
    …s to indicate not missing value. Fixes #19033
  5. [mcs] Do type parameter conversion involving type parameters using de…

    marek-safar committed May 6, 2014
    …pendency rules. Fixes #18473
  6. Merge pull request #1017 from akoeplinger/fix-monocc

    marek-safar committed May 6, 2014
    [Mono.CodeContracts] Always build debug file for the test assembly
  7. [Mono.CodeContracts] Always build debug file for the test assembly

    akoeplinger committed May 6, 2014
    The tests require that the debug file is available, however in the net_4_0 profile this file isn't generated by default.
    We now ensure the debug file is always generated for the test assembly.
Commits on May 5, 2014
  1. [sdb] Add a new TypeMirror.NewInstance () method which can create val…

    vargaz committed May 5, 2014
    …uetypes without a ctor.
  2. [mono-api-html] Report [Obsolete] members in a separate section (not …

    spouliot committed May 5, 2014
    …as both removed and added with an [Obsolete]). That makes it easier to read long API diff reports
  3. [counters] Disable register filter on valid_mask

    luhenry committed May 5, 2014
    This was previously used to not store counters that were not going to be dumped, but because we can now sample them, we have to make sure that they are stored, even if we do not plan to dump or sample them.
  4. [counters] Fix type issue on mini counters

    luhenry committed May 5, 2014
    Used MONO_COUNTER_WORD for gint32 variable, crashed on 64bits platform.
  5. [counters] Use macro to copy counter in sampling, and use sizeof dire…

    luhenry committed May 5, 2014
    …ctly instead of mono_counter_get_size
    
    The use of sizeof will enable compilers optimization on memcpy.
Commits on May 4, 2014
Commits on May 3, 2014
  1. [runtime] Fix some automake conditionals in scripts/, they should be …

    vargaz committed May 3, 2014
    …in the beginning of the line.
Commits on May 2, 2014