OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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_COMPILER_AST_GRAPH_BUILDER_H_ | 5 #ifndef V8_COMPILER_AST_GRAPH_BUILDER_H_ |
6 #define V8_COMPILER_AST_GRAPH_BUILDER_H_ | 6 #define V8_COMPILER_AST_GRAPH_BUILDER_H_ |
7 | 7 |
8 #include "src/ast.h" | 8 #include "src/ast.h" |
9 #include "src/compiler/js-graph.h" | 9 #include "src/compiler/js-graph.h" |
10 #include "src/compiler/liveness-analyzer.h" | 10 #include "src/compiler/liveness-analyzer.h" |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
262 Node* BuildArgumentsObject(Variable* arguments); | 262 Node* BuildArgumentsObject(Variable* arguments); |
263 | 263 |
264 // Builder to create an array of rest parameters if used | 264 // Builder to create an array of rest parameters if used |
265 Node* BuildRestArgumentsArray(Variable* rest, int index); | 265 Node* BuildRestArgumentsArray(Variable* rest, int index); |
266 | 266 |
267 // Builder that assigns to the .this_function internal variable if needed. | 267 // Builder that assigns to the .this_function internal variable if needed. |
268 Node* BuildThisFunctionVar(Variable* this_function_var); | 268 Node* BuildThisFunctionVar(Variable* this_function_var); |
269 | 269 |
270 // Builders for variable load and assignment. | 270 // Builders for variable load and assignment. |
271 Node* BuildVariableAssignment(Variable* variable, Node* value, | 271 Node* BuildVariableAssignment(Variable* variable, Node* value, |
272 Token::Value op, BailoutId bailout_id, | 272 Token::Value op, |
| 273 const ResolvedFeedbackSlot& slot, |
| 274 BailoutId bailout_id, |
273 FrameStateBeforeAndAfter& states, | 275 FrameStateBeforeAndAfter& states, |
274 OutputFrameStateCombine framestate_combine = | 276 OutputFrameStateCombine framestate_combine = |
275 OutputFrameStateCombine::Ignore()); | 277 OutputFrameStateCombine::Ignore()); |
276 Node* BuildVariableDelete(Variable* variable, BailoutId bailout_id, | 278 Node* BuildVariableDelete(Variable* variable, BailoutId bailout_id, |
277 OutputFrameStateCombine framestate_combine); | 279 OutputFrameStateCombine framestate_combine); |
278 Node* BuildVariableLoad(Variable* variable, BailoutId bailout_id, | 280 Node* BuildVariableLoad(Variable* variable, BailoutId bailout_id, |
279 FrameStateBeforeAndAfter& states, | 281 FrameStateBeforeAndAfter& states, |
280 const ResolvedFeedbackSlot& feedback, | 282 const ResolvedFeedbackSlot& feedback, |
281 OutputFrameStateCombine framestate_combine, | 283 OutputFrameStateCombine framestate_combine, |
282 ContextualMode mode = CONTEXTUAL); | 284 ContextualMode mode = CONTEXTUAL); |
283 | 285 |
284 // Builders for property loads and stores. | 286 // Builders for property loads and stores. |
285 Node* BuildKeyedLoad(Node* receiver, Node* key, | 287 Node* BuildKeyedLoad(Node* receiver, Node* key, |
286 const ResolvedFeedbackSlot& feedback); | 288 const ResolvedFeedbackSlot& feedback); |
287 Node* BuildNamedLoad(Node* receiver, Handle<Name> name, | 289 Node* BuildNamedLoad(Node* receiver, Handle<Name> name, |
288 const ResolvedFeedbackSlot& feedback, | 290 const ResolvedFeedbackSlot& feedback, |
289 ContextualMode mode = NOT_CONTEXTUAL); | 291 ContextualMode mode = NOT_CONTEXTUAL); |
290 Node* BuildKeyedStore(Node* receiver, Node* key, Node* value, | 292 Node* BuildKeyedStore(Node* receiver, Node* key, Node* value, |
| 293 const ResolvedFeedbackSlot& feedback, |
291 TypeFeedbackId id); | 294 TypeFeedbackId id); |
292 Node* BuildNamedStore(Node* receiver, Handle<Name>, Node* value, | 295 Node* BuildNamedStore(Node* receiver, Handle<Name>, Node* value, |
| 296 const ResolvedFeedbackSlot& feedback, |
293 TypeFeedbackId id); | 297 TypeFeedbackId id); |
294 | 298 |
295 // Builders for super property loads and stores. | 299 // Builders for super property loads and stores. |
296 Node* BuildKeyedSuperStore(Node* receiver, Node* home_object, Node* key, | 300 Node* BuildKeyedSuperStore(Node* receiver, Node* home_object, Node* key, |
297 Node* value, TypeFeedbackId id); | 301 Node* value, TypeFeedbackId id); |
298 Node* BuildNamedSuperStore(Node* receiver, Node* home_object, | 302 Node* BuildNamedSuperStore(Node* receiver, Node* home_object, |
299 Handle<Name> name, Node* value, TypeFeedbackId id); | 303 Handle<Name> name, Node* value, TypeFeedbackId id); |
300 Node* BuildNamedSuperLoad(Node* receiver, Node* home_object, | 304 Node* BuildNamedSuperLoad(Node* receiver, Node* home_object, |
301 Handle<Name> name, | 305 Handle<Name> name, |
302 const ResolvedFeedbackSlot& feedback); | 306 const ResolvedFeedbackSlot& feedback); |
(...skipping 11 matching lines...) Expand all Loading... |
314 Node* BuildLoadExternal(ExternalReference ref, MachineType type); | 318 Node* BuildLoadExternal(ExternalReference ref, MachineType type); |
315 Node* BuildStoreExternal(ExternalReference ref, MachineType type, Node* val); | 319 Node* BuildStoreExternal(ExternalReference ref, MachineType type, Node* val); |
316 | 320 |
317 // Builders for automatic type conversion. | 321 // Builders for automatic type conversion. |
318 Node* BuildToBoolean(Node* input); | 322 Node* BuildToBoolean(Node* input); |
319 Node* BuildToName(Node* input, BailoutId bailout_id); | 323 Node* BuildToName(Node* input, BailoutId bailout_id); |
320 Node* BuildToObject(Node* input, BailoutId bailout_id); | 324 Node* BuildToObject(Node* input, BailoutId bailout_id); |
321 | 325 |
322 // Builder for adding the [[HomeObject]] to a value if the value came from a | 326 // Builder for adding the [[HomeObject]] to a value if the value came from a |
323 // function literal and needs a home object. Do nothing otherwise. | 327 // function literal and needs a home object. Do nothing otherwise. |
324 Node* BuildSetHomeObject(Node* value, Node* home_object, Expression* expr); | 328 Node* BuildSetHomeObject(Node* value, Node* home_object, Expression* expr, |
| 329 const ResolvedFeedbackSlot& slot); |
325 | 330 |
326 // Builders for error reporting at runtime. | 331 // Builders for error reporting at runtime. |
327 Node* BuildThrowError(Node* exception, BailoutId bailout_id); | 332 Node* BuildThrowError(Node* exception, BailoutId bailout_id); |
328 Node* BuildThrowReferenceError(Variable* var, BailoutId bailout_id); | 333 Node* BuildThrowReferenceError(Variable* var, BailoutId bailout_id); |
329 Node* BuildThrowConstAssignError(BailoutId bailout_id); | 334 Node* BuildThrowConstAssignError(BailoutId bailout_id); |
330 Node* BuildThrowStaticPrototypeError(BailoutId bailout_id); | 335 Node* BuildThrowStaticPrototypeError(BailoutId bailout_id); |
331 | 336 |
332 // Builders for dynamic hole-checks at runtime. | 337 // Builders for dynamic hole-checks at runtime. |
333 Node* BuildHoleCheckSilent(Node* value, Node* for_hole, Node* not_hole); | 338 Node* BuildHoleCheckSilent(Node* value, Node* for_hole, Node* not_hole); |
334 Node* BuildHoleCheckThrow(Node* value, Variable* var, Node* not_hole, | 339 Node* BuildHoleCheckThrow(Node* value, Variable* var, Node* not_hole, |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 void VisitTypeof(UnaryOperation* expr); | 385 void VisitTypeof(UnaryOperation* expr); |
381 void VisitNot(UnaryOperation* expr); | 386 void VisitNot(UnaryOperation* expr); |
382 | 387 |
383 // Dispatched from VisitBinaryOperation. | 388 // Dispatched from VisitBinaryOperation. |
384 void VisitComma(BinaryOperation* expr); | 389 void VisitComma(BinaryOperation* expr); |
385 void VisitLogicalExpression(BinaryOperation* expr); | 390 void VisitLogicalExpression(BinaryOperation* expr); |
386 void VisitArithmeticExpression(BinaryOperation* expr); | 391 void VisitArithmeticExpression(BinaryOperation* expr); |
387 | 392 |
388 // Dispatched from VisitForInStatement. | 393 // Dispatched from VisitForInStatement. |
389 void VisitForInAssignment(Expression* expr, Node* value, | 394 void VisitForInAssignment(Expression* expr, Node* value, |
| 395 const ResolvedFeedbackSlot& slot, |
390 BailoutId bailout_id); | 396 BailoutId bailout_id); |
391 | 397 |
392 // Dispatched from VisitClassLiteral. | 398 // Dispatched from VisitClassLiteral. |
393 void VisitClassLiteralContents(ClassLiteral* expr); | 399 void VisitClassLiteralContents(ClassLiteral* expr); |
394 | 400 |
395 DEFINE_AST_VISITOR_SUBCLASS_MEMBERS(); | 401 DEFINE_AST_VISITOR_SUBCLASS_MEMBERS(); |
396 DISALLOW_COPY_AND_ASSIGN(AstGraphBuilder); | 402 DISALLOW_COPY_AND_ASSIGN(AstGraphBuilder); |
397 }; | 403 }; |
398 | 404 |
399 | 405 |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
534 | 540 |
535 // Prepare environment to be used as loop header. | 541 // Prepare environment to be used as loop header. |
536 void PrepareForLoop(BitVector* assigned, bool is_osr = false); | 542 void PrepareForLoop(BitVector* assigned, bool is_osr = false); |
537 }; | 543 }; |
538 | 544 |
539 } // namespace compiler | 545 } // namespace compiler |
540 } // namespace internal | 546 } // namespace internal |
541 } // namespace v8 | 547 } // namespace v8 |
542 | 548 |
543 #endif // V8_COMPILER_AST_GRAPH_BUILDER_H_ | 549 #endif // V8_COMPILER_AST_GRAPH_BUILDER_H_ |
OLD | NEW |