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

Side by Side Diff: src/ast.cc

Issue 561913002: Class syntax parsing (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: git rebase Created 6 years, 3 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/ast.h ('k') | src/ast-value-factory.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "src/ast.h" 5 #include "src/ast.h"
6 6
7 #include <cmath> // For isfinite. 7 #include <cmath> // For isfinite.
8 #include "src/builtins.h" 8 #include "src/builtins.h"
9 #include "src/code-stubs.h" 9 #include "src/code-stubs.h"
10 #include "src/contexts.h" 10 #include "src/contexts.h"
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 shared_info_ = Handle<SharedFunctionInfo>(shared); 166 shared_info_ = Handle<SharedFunctionInfo>(shared);
167 break; 167 break;
168 } 168 }
169 } 169 }
170 } 170 }
171 } 171 }
172 172
173 173
174 ObjectLiteralProperty::ObjectLiteralProperty(Zone* zone, 174 ObjectLiteralProperty::ObjectLiteralProperty(Zone* zone,
175 AstValueFactory* ast_value_factory, 175 AstValueFactory* ast_value_factory,
176 Literal* key, Expression* value) { 176 Literal* key, Expression* value,
177 bool is_static) {
177 emit_store_ = true; 178 emit_store_ = true;
178 key_ = key; 179 key_ = key;
179 value_ = value; 180 value_ = value;
181 is_static_ = is_static;
180 if (key->raw_value()->EqualsString(ast_value_factory->proto_string())) { 182 if (key->raw_value()->EqualsString(ast_value_factory->proto_string())) {
181 kind_ = PROTOTYPE; 183 kind_ = PROTOTYPE;
182 } else if (value_->AsMaterializedLiteral() != NULL) { 184 } else if (value_->AsMaterializedLiteral() != NULL) {
183 kind_ = MATERIALIZED_LITERAL; 185 kind_ = MATERIALIZED_LITERAL;
184 } else if (value_->IsLiteral()) { 186 } else if (value_->IsLiteral()) {
185 kind_ = CONSTANT; 187 kind_ = CONSTANT;
186 } else { 188 } else {
187 kind_ = COMPUTED; 189 kind_ = COMPUTED;
188 } 190 }
189 } 191 }
190 192
191 193
192 ObjectLiteralProperty::ObjectLiteralProperty( 194 ObjectLiteralProperty::ObjectLiteralProperty(Zone* zone, bool is_getter,
193 Zone* zone, bool is_getter, FunctionLiteral* value) { 195 FunctionLiteral* value,
196 bool is_static) {
194 emit_store_ = true; 197 emit_store_ = true;
195 value_ = value; 198 value_ = value;
196 kind_ = is_getter ? GETTER : SETTER; 199 kind_ = is_getter ? GETTER : SETTER;
200 is_static_ = is_static;
197 } 201 }
198 202
199 203
200 bool ObjectLiteral::Property::IsCompileTimeValue() { 204 bool ObjectLiteral::Property::IsCompileTimeValue() {
201 return kind_ == CONSTANT || 205 return kind_ == CONSTANT ||
202 (kind_ == MATERIALIZED_LITERAL && 206 (kind_ == MATERIALIZED_LITERAL &&
203 CompileTimeValue::IsCompileTimeValue(value_)); 207 CompileTimeValue::IsCompileTimeValue(value_));
204 } 208 }
205 209
206 210
(...skipping 876 matching lines...) Expand 10 before | Expand all | Expand 10 after
1083 // We currently do not optimize any modules. 1087 // We currently do not optimize any modules.
1084 DONT_OPTIMIZE_NODE(ModuleDeclaration) 1088 DONT_OPTIMIZE_NODE(ModuleDeclaration)
1085 DONT_OPTIMIZE_NODE(ImportDeclaration) 1089 DONT_OPTIMIZE_NODE(ImportDeclaration)
1086 DONT_OPTIMIZE_NODE(ExportDeclaration) 1090 DONT_OPTIMIZE_NODE(ExportDeclaration)
1087 DONT_OPTIMIZE_NODE(ModuleVariable) 1091 DONT_OPTIMIZE_NODE(ModuleVariable)
1088 DONT_OPTIMIZE_NODE(ModulePath) 1092 DONT_OPTIMIZE_NODE(ModulePath)
1089 DONT_OPTIMIZE_NODE(ModuleUrl) 1093 DONT_OPTIMIZE_NODE(ModuleUrl)
1090 DONT_OPTIMIZE_NODE(ModuleStatement) 1094 DONT_OPTIMIZE_NODE(ModuleStatement)
1091 DONT_OPTIMIZE_NODE(WithStatement) 1095 DONT_OPTIMIZE_NODE(WithStatement)
1092 DONT_OPTIMIZE_NODE(DebuggerStatement) 1096 DONT_OPTIMIZE_NODE(DebuggerStatement)
1097 DONT_OPTIMIZE_NODE(ClassLiteral)
1093 DONT_OPTIMIZE_NODE(NativeFunctionLiteral) 1098 DONT_OPTIMIZE_NODE(NativeFunctionLiteral)
1094 DONT_OPTIMIZE_NODE(SuperReference) 1099 DONT_OPTIMIZE_NODE(SuperReference)
1095 1100
1096 DONT_OPTIMIZE_NODE_WITH_FEEDBACK_SLOTS(Yield) 1101 DONT_OPTIMIZE_NODE_WITH_FEEDBACK_SLOTS(Yield)
1097 1102
1098 // TODO(turbofan): Remove the dont_turbofan_reason once this list is empty. 1103 // TODO(turbofan): Remove the dont_turbofan_reason once this list is empty.
1099 DONT_TURBOFAN_NODE(ForOfStatement) 1104 DONT_TURBOFAN_NODE(ForOfStatement)
1100 DONT_TURBOFAN_NODE(TryCatchStatement) 1105 DONT_TURBOFAN_NODE(TryCatchStatement)
1101 DONT_TURBOFAN_NODE(TryFinallyStatement) 1106 DONT_TURBOFAN_NODE(TryFinallyStatement)
1102 1107
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1135 SNPrintF(buffer, "%d", Smi::cast(*value())->value()); 1140 SNPrintF(buffer, "%d", Smi::cast(*value())->value());
1136 str = arr; 1141 str = arr;
1137 } else { 1142 } else {
1138 str = DoubleToCString(value()->Number(), buffer); 1143 str = DoubleToCString(value()->Number(), buffer);
1139 } 1144 }
1140 return isolate_->factory()->NewStringFromAsciiChecked(str); 1145 return isolate_->factory()->NewStringFromAsciiChecked(str);
1141 } 1146 }
1142 1147
1143 1148
1144 } } // namespace v8::internal 1149 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/ast.h ('k') | src/ast-value-factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698