Oilpan: disable conservative GCs during initial GC mixin construction.

Another, more effective, attempt at disallowing conservative GCs from
striking while constructing a GC mixin object and it is not in a
well-formed state to allow a GC to strike.

GC mixins now override 'operator new', which along with taking care of
the allocation request, disables conservative GCs. GCs are kept disabled
until the constructors of the mixin's inherited classes have run and
the mixin itself is in a well-formed state to re-enable GCs.

Arrange for that re-enabling by way of a private field to an empty type
with a constructor that takes care of the underlying details. All of this
is hidden from direct view to the Blink code, still only requiring that
GC mixin instances declare themselves as such by using the
USING_GARBAGE_COLLECTED_MIXIN(Type) macro.

R=haraken
BUG=456823

Review URL: https://codereview.chromium.org/980653002

git-svn-id: svn://svn.chromium.org/blink/trunk@191501 bbb929c8-8fbe-4397-9dbb-9b2b20218538
18 files changed
tree: c380b39319f9662f40602c924bfbacf1c2587161
  1. third_party/