From db60c62ff99186297b40cf36708233c3d3bc56bc Mon Sep 17 00:00:00 2001 From: Andi McClure Date: Fri, 19 Aug 2016 16:07:22 -0400 Subject: GC bridge: Include non-bridged objects in the exported object graph Introduces a mechanism for non-bridged SCCs which lay between bridged SCCs in the SCC forest to be reported to the bridge client. In this version, such non-bridged SCCs are always reported. The result is that most GCs get a little slower but GCs in which the "double fan" shape appears (many bridged objects link to one C# object which links to many bridged objects) become massively faster. Because before clients were allowed to assume exported SCCs were always bridged, SGEN_BRIDGE_VERSION has been incremented. --- docs/sources/mono-api-gc.html | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'docs') diff --git a/docs/sources/mono-api-gc.html b/docs/sources/mono-api-gc.html index 20d6cb9dc9b..cddef0364cb 100644 --- a/docs/sources/mono-api-gc.html +++ b/docs/sources/mono-api-gc.html @@ -40,9 +40,8 @@

The output of the SCC analysis is passed to the `cross_references()` callback. It is expected to set the `is_alive` flag on those strongly connected components that it - wishes to be kept alive. Only bridged objects will be - reported to the callback, i.e., non-bridged objects are - removed from the callback graph. + wishes to be kept alive. The value of `is_alive` will be + ignored on any SCCs which lack bridges.

In monodroid each bridged object has a corresponding Java mirror object. In the bridge callback it reifies the Mono @@ -63,7 +62,7 @@

enum { - SGEN_BRIDGE_VERSION = 4 + SGEN_BRIDGE_VERSION = 5 }; typedef enum { -- cgit v1.2.3