| 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;
|
| }
|
|
|