Reviewers: Lasse Reichstein, Description: Fix map space explosion from changing the arguments and caller properties on native functions.
Adding these local properties on all native functions made us do a ConvertDescriptorToField on the callback on each and every native functions, resulting in us creating an extra map for each of these. Please review this at http://codereview.chromium.org/7779046/ SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/accessors.cc M src/v8natives.js Index: src/accessors.cc =================================================================== --- src/accessors.cc (revision 9124) +++ src/accessors.cc (working copy) @@ -599,6 +599,7 @@ if (!found_it) return isolate->heap()->undefined_value(); Handle<JSFunction> function(holder, isolate); + if (function->shared()->native()) return isolate->heap()->null_value(); // Find the top invocation of the function by traversing frames. List<JSFunction*> functions(2); for (JavaScriptFrameIterator it(isolate); !it.done(); it.Advance()) { @@ -732,6 +733,7 @@ bool found_it = false; JSFunction* holder = FindInPrototypeChain<JSFunction>(object, &found_it); if (!found_it) return isolate->heap()->undefined_value(); + if (holder->shared()->native()) return isolate->heap()->null_value(); Handle<JSFunction> function(holder, isolate); FrameFunctionIterator it(isolate, no_alloc); Index: src/v8natives.js =================================================================== --- src/v8natives.js (revision 9124) +++ src/v8natives.js (working copy) @@ -55,15 +55,6 @@ var f = functions[i + 1]; %FunctionSetName(f, key); %FunctionRemovePrototype(f); - // We match firefox on this, but not Safari (which does not have the - // property at all). - %IgnoreAttributesAndSetProperty(f, "caller", - null, - DONT_ENUM | DONT_DELETE); - %IgnoreAttributesAndSetProperty(f, "arguments", - null, - DONT_ENUM | DONT_DELETE); - %SetProperty(object, key, f, attributes); %SetNativeFlag(f); } -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
