1c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch#include "content/shell/renderer/gc_extension.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "v8/include/v8.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kGCExtensionName[] = "v8/GCController"; 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions_v8 { 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)v8::Extension* GCExtension::Get() { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) v8::Extension* extension = new v8::Extension( 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) kGCExtensionName, 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "(function () {" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " var v8_gc;" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " if (gc) v8_gc = gc;" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " GCController = new Object();" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " GCController.collect =" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " function() {if (v8_gc) v8_gc(); };" 23a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) " GCController.minorCollect =" 24a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) " function() {if (v8_gc) v8_gc(true); };" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) " })();"); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return extension; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace extensions_v8 30