OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_PREPARSER_H | 5 #ifndef V8_PREPARSER_H |
6 #define V8_PREPARSER_H | 6 #define V8_PREPARSER_H |
7 | 7 |
8 #include "src/v8.h" | 8 #include "src/v8.h" |
9 | 9 |
10 #include "src/bailout-reason.h" | 10 #include "src/bailout-reason.h" |
(...skipping 1031 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1042 PreParserIdentifier js_flags, | 1042 PreParserIdentifier js_flags, |
1043 int literal_index, | 1043 int literal_index, |
1044 int pos) { | 1044 int pos) { |
1045 return PreParserExpression::Default(); | 1045 return PreParserExpression::Default(); |
1046 } | 1046 } |
1047 PreParserExpression NewArrayLiteral(PreParserExpressionList values, | 1047 PreParserExpression NewArrayLiteral(PreParserExpressionList values, |
1048 int literal_index, | 1048 int literal_index, |
1049 int pos) { | 1049 int pos) { |
1050 return PreParserExpression::Default(); | 1050 return PreParserExpression::Default(); |
1051 } | 1051 } |
1052 PreParserExpression NewObjectLiteralProperty(bool is_getter, | 1052 PreParserExpression NewObjectLiteralProperty(PreParserExpression key, |
1053 PreParserExpression key, | |
1054 PreParserExpression value, | 1053 PreParserExpression value, |
1055 int pos, bool is_static, | 1054 ObjectLiteralProperty::Kind kind, |
| 1055 bool is_static, |
1056 bool is_computed_name) { | 1056 bool is_computed_name) { |
1057 return PreParserExpression::Default(); | 1057 return PreParserExpression::Default(); |
1058 } | 1058 } |
1059 PreParserExpression NewObjectLiteralProperty(PreParserExpression key, | 1059 PreParserExpression NewObjectLiteralProperty(PreParserExpression key, |
1060 PreParserExpression value, | 1060 PreParserExpression value, |
1061 bool is_static, | 1061 bool is_static, |
1062 bool is_computed_name) { | 1062 bool is_computed_name) { |
1063 return PreParserExpression::Default(); | 1063 return PreParserExpression::Default(); |
1064 } | 1064 } |
1065 PreParserExpression NewObjectLiteral(PreParserExpressionList properties, | 1065 PreParserExpression NewObjectLiteral(PreParserExpressionList properties, |
(...skipping 1068 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2134 CHECK_OK_CUSTOM(EmptyObjectLiteralProperty)); | 2134 CHECK_OK_CUSTOM(EmptyObjectLiteralProperty)); |
2135 } | 2135 } |
2136 | 2136 |
2137 value = this->ParseFunctionLiteral( | 2137 value = this->ParseFunctionLiteral( |
2138 name, scanner()->location(), | 2138 name, scanner()->location(), |
2139 false, // reserved words are allowed here | 2139 false, // reserved words are allowed here |
2140 kind, RelocInfo::kNoPosition, FunctionLiteral::ANONYMOUS_EXPRESSION, | 2140 kind, RelocInfo::kNoPosition, FunctionLiteral::ANONYMOUS_EXPRESSION, |
2141 FunctionLiteral::NORMAL_ARITY, | 2141 FunctionLiteral::NORMAL_ARITY, |
2142 CHECK_OK_CUSTOM(EmptyObjectLiteralProperty)); | 2142 CHECK_OK_CUSTOM(EmptyObjectLiteralProperty)); |
2143 | 2143 |
| 2144 return factory()->NewObjectLiteralProperty(name_expression, value, |
| 2145 ObjectLiteralProperty::COMPUTED, |
| 2146 is_static, *is_computed_name); |
| 2147 |
2144 } else if (in_class && name_is_static && !is_static) { | 2148 } else if (in_class && name_is_static && !is_static) { |
2145 // static MethodDefinition | 2149 // static MethodDefinition |
2146 return ParsePropertyDefinition(checker, true, true, is_computed_name, NULL, | 2150 return ParsePropertyDefinition(checker, true, true, is_computed_name, NULL, |
2147 ok); | 2151 ok); |
2148 | 2152 |
2149 } else if (is_get || is_set) { | 2153 } else if (is_get || is_set) { |
2150 // Accessor | 2154 // Accessor |
2151 name = this->EmptyIdentifier(); | 2155 name = this->EmptyIdentifier(); |
2152 bool dont_care = false; | 2156 bool dont_care = false; |
2153 name_token = peek(); | 2157 name_token = peek(); |
(...skipping 28 matching lines...) Expand all Loading... |
2182 | 2186 |
2183 // Make sure the name expression is a string since we need a Name for | 2187 // Make sure the name expression is a string since we need a Name for |
2184 // Runtime_DefineAccessorPropertyUnchecked and since we can determine this | 2188 // Runtime_DefineAccessorPropertyUnchecked and since we can determine this |
2185 // statically we can skip the extra runtime check. | 2189 // statically we can skip the extra runtime check. |
2186 if (!*is_computed_name) { | 2190 if (!*is_computed_name) { |
2187 name_expression = | 2191 name_expression = |
2188 factory()->NewStringLiteral(name, name_expression->position()); | 2192 factory()->NewStringLiteral(name, name_expression->position()); |
2189 } | 2193 } |
2190 | 2194 |
2191 return factory()->NewObjectLiteralProperty( | 2195 return factory()->NewObjectLiteralProperty( |
2192 is_get, name_expression, value, next_pos, is_static, *is_computed_name); | 2196 name_expression, value, |
| 2197 is_get ? ObjectLiteralProperty::GETTER : ObjectLiteralProperty::SETTER, |
| 2198 is_static, *is_computed_name); |
2193 | 2199 |
2194 } else if (!in_class && allow_harmony_object_literals_ && | 2200 } else if (!in_class && allow_harmony_object_literals_ && |
2195 Token::IsIdentifier(name_token, strict_mode(), | 2201 Token::IsIdentifier(name_token, strict_mode(), |
2196 this->is_generator())) { | 2202 this->is_generator())) { |
| 2203 DCHECK(!*is_computed_name); |
| 2204 DCHECK(!is_static); |
2197 value = this->ExpressionFromIdentifier(name, next_pos, scope_, factory()); | 2205 value = this->ExpressionFromIdentifier(name, next_pos, scope_, factory()); |
| 2206 return factory()->NewObjectLiteralProperty( |
| 2207 name_expression, value, ObjectLiteralProperty::COMPUTED, false, false); |
2198 | 2208 |
2199 } else { | 2209 } else { |
2200 Token::Value next = Next(); | 2210 Token::Value next = Next(); |
2201 ReportUnexpectedToken(next); | 2211 ReportUnexpectedToken(next); |
2202 *ok = false; | 2212 *ok = false; |
2203 return this->EmptyObjectLiteralProperty(); | 2213 return this->EmptyObjectLiteralProperty(); |
2204 } | 2214 } |
2205 | 2215 |
2206 return factory()->NewObjectLiteralProperty(name_expression, value, is_static, | 2216 return factory()->NewObjectLiteralProperty(name_expression, value, is_static, |
2207 *is_computed_name); | 2217 *is_computed_name); |
(...skipping 838 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3046 DCHECK(IsAccessorAccessorConflict(old_type, type)); | 3056 DCHECK(IsAccessorAccessorConflict(old_type, type)); |
3047 // Both accessors of the same type. | 3057 // Both accessors of the same type. |
3048 parser()->ReportMessage("accessor_get_set"); | 3058 parser()->ReportMessage("accessor_get_set"); |
3049 } | 3059 } |
3050 *ok = false; | 3060 *ok = false; |
3051 } | 3061 } |
3052 } | 3062 } |
3053 } } // v8::internal | 3063 } } // v8::internal |
3054 | 3064 |
3055 #endif // V8_PREPARSER_H | 3065 #endif // V8_PREPARSER_H |
OLD | NEW |