Index: src/contexts.h |
diff --git a/src/contexts.h b/src/contexts.h |
index 3b4b7992c099bbc5f7393fc37d7fa5549284e119..fffc5b40c5effb744bdca92a75e0000bf990e892 100644 |
--- a/src/contexts.h |
+++ b/src/contexts.h |
@@ -176,8 +176,7 @@ enum BindingFlags { |
V(NATIVE_OBJECT_GET_NOTIFIER_INDEX, JSFunction, native_object_get_notifier) \ |
V(NATIVE_OBJECT_NOTIFIER_PERFORM_CHANGE, JSFunction, \ |
native_object_notifier_perform_change) \ |
- V(SLOPPY_GENERATOR_FUNCTION_MAP_INDEX, Map, sloppy_generator_function_map) \ |
- V(STRICT_GENERATOR_FUNCTION_MAP_INDEX, Map, strict_generator_function_map) \ |
+ V(GENERATOR_FUNCTION_MAP_INDEX, Map, generator_function_map) \ |
V(STRONG_GENERATOR_FUNCTION_MAP_INDEX, Map, strong_generator_function_map) \ |
V(GENERATOR_OBJECT_PROTOTYPE_MAP_INDEX, Map, generator_object_prototype_map) \ |
V(ITERATOR_RESULT_MAP_INDEX, Map, iterator_result_map) \ |
@@ -409,8 +408,7 @@ class Context: public FixedArray { |
NATIVE_OBJECT_OBSERVE_INDEX, |
NATIVE_OBJECT_GET_NOTIFIER_INDEX, |
NATIVE_OBJECT_NOTIFIER_PERFORM_CHANGE, |
- SLOPPY_GENERATOR_FUNCTION_MAP_INDEX, |
- STRICT_GENERATOR_FUNCTION_MAP_INDEX, |
+ GENERATOR_FUNCTION_MAP_INDEX, |
STRONG_GENERATOR_FUNCTION_MAP_INDEX, |
GENERATOR_OBJECT_PROTOTYPE_MAP_INDEX, |
ITERATOR_RESULT_MAP_INDEX, |
@@ -576,21 +574,20 @@ class Context: public FixedArray { |
static int FunctionMapIndex(LanguageMode language_mode, FunctionKind kind) { |
if (IsGeneratorFunction(kind)) { |
- return is_strong(language_mode) ? STRONG_GENERATOR_FUNCTION_MAP_INDEX : |
- is_strict(language_mode) ? STRICT_GENERATOR_FUNCTION_MAP_INDEX |
- : SLOPPY_GENERATOR_FUNCTION_MAP_INDEX; |
+ return is_strong(language_mode) ? STRONG_GENERATOR_FUNCTION_MAP_INDEX |
+ : GENERATOR_FUNCTION_MAP_INDEX; |
} |
if (IsConstructor(kind)) { |
- return is_strong(language_mode) ? STRONG_CONSTRUCTOR_MAP_INDEX : |
- is_strict(language_mode) ? STRICT_FUNCTION_MAP_INDEX |
- : SLOPPY_FUNCTION_MAP_INDEX; |
+ // Use strict function map (no own "caller" / "arguments") |
+ return is_strong(language_mode) ? STRONG_CONSTRUCTOR_MAP_INDEX |
+ : STRICT_FUNCTION_MAP_INDEX; |
} |
if (IsArrowFunction(kind) || IsConciseMethod(kind) || |
IsAccessorFunction(kind)) { |
return is_strong(language_mode) ? STRONG_FUNCTION_MAP_INDEX : |
- is_strict(language_mode) ? |
+ is_strict(language_mode) || !IsAccessorFunction(kind) ? |
STRICT_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX : |
SLOPPY_FUNCTION_WITHOUT_PROTOTYPE_MAP_INDEX; |
} |