Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Unified Diff: src/factory.cc

Issue 1027283004: [es6] do not add caller/arguments to ES6 function definitions (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: diff cleanup Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« src/contexts.h ('K') | « src/factory.h ('k') | src/messages.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/factory.cc
diff --git a/src/factory.cc b/src/factory.cc
index 5dac6a1ada3454980e348caf6a76b8268d51ee0d..8c23e39d3082decd121e462e861cb4abdb1e1de0 100644
--- a/src/factory.cc
+++ b/src/factory.cc
@@ -1256,7 +1256,8 @@ Handle<JSFunction> Factory::NewFunction(Handle<Map> map,
map.is_identical_to(
isolate()->sloppy_function_without_prototype_map()) ||
map.is_identical_to(
- isolate()->sloppy_function_with_readonly_prototype_map())));
+ isolate()->sloppy_function_with_readonly_prototype_map()) ||
+ map.is_identical_to(isolate()->strict_function_map())));
return NewFunction(map, info, context);
}
@@ -1267,20 +1268,25 @@ Handle<JSFunction> Factory::NewFunction(Handle<String> name) {
}
-Handle<JSFunction> Factory::NewFunctionWithoutPrototype(Handle<String> name,
- Handle<Code> code) {
- return NewFunction(
- isolate()->sloppy_function_without_prototype_map(), name, code);
+Handle<JSFunction> Factory::NewFunctionWithoutPrototype(
+ Handle<String> name, Handle<Code> code, bool use_empty_function_map) {
+ Handle<Map> map = use_empty_function_map
arv (Not doing code reviews) 2015/03/26 12:46:43 What does "empty function" mean here? It does not
caitp (gmail) 2015/03/26 13:00:17 originally I was saving the map of the empty funct
arv (Not doing code reviews) 2015/03/26 13:03:30 strict sounds more correct here.
+ ? isolate()->strict_function_without_prototype_map()
+ : isolate()->sloppy_function_without_prototype_map();
+ return NewFunction(map, name, code);
}
-Handle<JSFunction> Factory::NewFunction(Handle<String> name,
- Handle<Code> code,
+Handle<JSFunction> Factory::NewFunction(Handle<String> name, Handle<Code> code,
Handle<Object> prototype,
- bool read_only_prototype) {
- Handle<Map> map = read_only_prototype
- ? isolate()->sloppy_function_with_readonly_prototype_map()
- : isolate()->sloppy_function_map();
+ bool read_only_prototype,
+ bool use_empty_function_map) {
+ DCHECK(!use_empty_function_map || !read_only_prototype);
+ Handle<Map> map = use_empty_function_map
+ ? isolate()->strict_function_map()
arv (Not doing code reviews) 2015/03/26 12:46:43 Is there no strict function with readonly prototyp
caitp (gmail) 2015/03/26 13:00:17 well, technically strict_function_map() IS a reado
caitp (gmail) 2015/03/26 13:03:02 wait, I'm wrong --- it's readonly during bootstrap
arv (Not doing code reviews) 2015/03/26 13:03:30 Maybe add a DCHECK to make sure we don't get the i
caitp (gmail) 2015/03/26 13:46:01 Done --- the DCHECK is now "!strict || !readonly_p
+ : read_only_prototype
+ ? isolate()->sloppy_function_with_readonly_prototype_map()
+ : isolate()->sloppy_function_map();
Handle<JSFunction> result = NewFunction(map, name, code);
result->set_prototype_or_initial_map(*prototype);
return result;
@@ -1291,10 +1297,11 @@ Handle<JSFunction> Factory::NewFunction(Handle<String> name, Handle<Code> code,
Handle<Object> prototype,
InstanceType type, int instance_size,
bool read_only_prototype,
- bool install_constructor) {
+ bool install_constructor,
+ bool use_empty_function_map) {
// Allocate the function
Handle<JSFunction> function = NewFunction(
- name, code, prototype, read_only_prototype);
+ name, code, prototype, read_only_prototype, use_empty_function_map);
ElementsKind elements_kind =
type == JS_ARRAY_TYPE ? FAST_SMI_ELEMENTS : FAST_HOLEY_SMI_ELEMENTS;
« src/contexts.h ('K') | « src/factory.h ('k') | src/messages.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698