| 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 #include "src/compiler/ast-graph-builder.h" | 5 #include "src/compiler/ast-graph-builder.h" |
| 6 | 6 |
| 7 #include "src/compiler.h" | 7 #include "src/compiler.h" |
| 8 #include "src/compiler/ast-loop-assignment-analyzer.h" | 8 #include "src/compiler/ast-loop-assignment-analyzer.h" |
| 9 #include "src/compiler/control-builders.h" | 9 #include "src/compiler/control-builders.h" |
| 10 #include "src/compiler/js-type-feedback.h" | 10 #include "src/compiler/js-type-feedback.h" |
| (...skipping 3448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3459 TypeFeedbackId id) { | 3459 TypeFeedbackId id) { |
| 3460 if (js_type_feedback) { | 3460 if (js_type_feedback) { |
| 3461 js_type_feedback->Record(node, id); | 3461 js_type_feedback->Record(node, id); |
| 3462 } | 3462 } |
| 3463 return node; | 3463 return node; |
| 3464 } | 3464 } |
| 3465 | 3465 |
| 3466 | 3466 |
| 3467 Node* AstGraphBuilder::BuildKeyedLoad(Node* object, Node* key, | 3467 Node* AstGraphBuilder::BuildKeyedLoad(Node* object, Node* key, |
| 3468 const ResolvedFeedbackSlot& feedback) { | 3468 const ResolvedFeedbackSlot& feedback) { |
| 3469 const Operator* op = javascript()->LoadProperty(feedback); | 3469 const Operator* op = javascript()->LoadProperty(feedback, language_mode()); |
| 3470 return Record(js_type_feedback_, | 3470 return Record(js_type_feedback_, |
| 3471 NewNode(op, object, key, GetFeedbackVector()), feedback.slot()); | 3471 NewNode(op, object, key, GetFeedbackVector()), feedback.slot()); |
| 3472 } | 3472 } |
| 3473 | 3473 |
| 3474 | 3474 |
| 3475 Node* AstGraphBuilder::BuildNamedLoad(Node* object, Handle<Name> name, | 3475 Node* AstGraphBuilder::BuildNamedLoad(Node* object, Handle<Name> name, |
| 3476 const ResolvedFeedbackSlot& feedback, | 3476 const ResolvedFeedbackSlot& feedback, |
| 3477 ContextualMode mode) { | 3477 ContextualMode mode) { |
| 3478 const Operator* op = | 3478 const Operator* op = javascript()->LoadNamed(MakeUnique(name), feedback, |
| 3479 javascript()->LoadNamed(MakeUnique(name), feedback, mode); | 3479 language_mode(), mode); |
| 3480 return Record(js_type_feedback_, NewNode(op, object, GetFeedbackVector()), | 3480 return Record(js_type_feedback_, NewNode(op, object, GetFeedbackVector()), |
| 3481 feedback.slot()); | 3481 feedback.slot()); |
| 3482 } | 3482 } |
| 3483 | 3483 |
| 3484 | 3484 |
| 3485 Node* AstGraphBuilder::BuildKeyedStore(Node* object, Node* key, Node* value, | 3485 Node* AstGraphBuilder::BuildKeyedStore(Node* object, Node* key, Node* value, |
| 3486 TypeFeedbackId id) { | 3486 TypeFeedbackId id) { |
| 3487 const Operator* op = javascript()->StoreProperty(language_mode()); | 3487 const Operator* op = javascript()->StoreProperty(language_mode()); |
| 3488 return Record(js_type_feedback_, NewNode(op, object, key, value), id); | 3488 return Record(js_type_feedback_, NewNode(op, object, key, value), id); |
| 3489 } | 3489 } |
| 3490 | 3490 |
| 3491 | 3491 |
| 3492 Node* AstGraphBuilder::BuildNamedStore(Node* object, Handle<Name> name, | 3492 Node* AstGraphBuilder::BuildNamedStore(Node* object, Handle<Name> name, |
| 3493 Node* value, TypeFeedbackId id) { | 3493 Node* value, TypeFeedbackId id) { |
| 3494 const Operator* op = | 3494 const Operator* op = |
| 3495 javascript()->StoreNamed(language_mode(), MakeUnique(name)); | 3495 javascript()->StoreNamed(language_mode(), MakeUnique(name)); |
| 3496 return Record(js_type_feedback_, NewNode(op, object, value), id); | 3496 return Record(js_type_feedback_, NewNode(op, object, value), id); |
| 3497 } | 3497 } |
| 3498 | 3498 |
| 3499 | 3499 |
| 3500 Node* AstGraphBuilder::BuildNamedSuperLoad( | 3500 Node* AstGraphBuilder::BuildNamedSuperLoad( |
| 3501 Node* receiver, Node* home_object, Handle<Name> name, | 3501 Node* receiver, Node* home_object, Handle<Name> name, |
| 3502 const ResolvedFeedbackSlot& feedback) { | 3502 const ResolvedFeedbackSlot& feedback) { |
| 3503 Node* name_node = jsgraph()->Constant(name); | 3503 Node* name_node = jsgraph()->Constant(name); |
| 3504 const Operator* op = javascript()->CallRuntime(Runtime::kLoadFromSuper, 3); | 3504 Node* language = jsgraph()->Constant(language_mode()); |
| 3505 Node* value = NewNode(op, receiver, home_object, name_node); | 3505 const Operator* op = javascript()->CallRuntime(Runtime::kLoadFromSuper, 4); |
| 3506 Node* value = NewNode(op, receiver, home_object, name_node, language); |
| 3506 return Record(js_type_feedback_, value, feedback.slot()); | 3507 return Record(js_type_feedback_, value, feedback.slot()); |
| 3507 } | 3508 } |
| 3508 | 3509 |
| 3509 | 3510 |
| 3510 Node* AstGraphBuilder::BuildKeyedSuperLoad( | 3511 Node* AstGraphBuilder::BuildKeyedSuperLoad( |
| 3511 Node* receiver, Node* home_object, Node* key, | 3512 Node* receiver, Node* home_object, Node* key, |
| 3512 const ResolvedFeedbackSlot& feedback) { | 3513 const ResolvedFeedbackSlot& feedback) { |
| 3514 Node* language = jsgraph()->Constant(language_mode()); |
| 3513 const Operator* op = | 3515 const Operator* op = |
| 3514 javascript()->CallRuntime(Runtime::kLoadKeyedFromSuper, 3); | 3516 javascript()->CallRuntime(Runtime::kLoadKeyedFromSuper, 4); |
| 3515 Node* value = NewNode(op, receiver, home_object, key); | 3517 Node* value = NewNode(op, receiver, home_object, key, language); |
| 3516 return Record(js_type_feedback_, value, feedback.slot()); | 3518 return Record(js_type_feedback_, value, feedback.slot()); |
| 3517 } | 3519 } |
| 3518 | 3520 |
| 3519 | 3521 |
| 3520 Node* AstGraphBuilder::BuildKeyedSuperStore(Node* receiver, Node* home_object, | 3522 Node* AstGraphBuilder::BuildKeyedSuperStore(Node* receiver, Node* home_object, |
| 3521 Node* key, Node* value, | 3523 Node* key, Node* value, |
| 3522 TypeFeedbackId id) { | 3524 TypeFeedbackId id) { |
| 3523 Runtime::FunctionId function_id = is_strict(language_mode()) | 3525 Runtime::FunctionId function_id = is_strict(language_mode()) |
| 3524 ? Runtime::kStoreKeyedToSuper_Strict | 3526 ? Runtime::kStoreKeyedToSuper_Strict |
| 3525 : Runtime::kStoreKeyedToSuper_Sloppy; | 3527 : Runtime::kStoreKeyedToSuper_Sloppy; |
| (...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4076 // Phi does not exist yet, introduce one. | 4078 // Phi does not exist yet, introduce one. |
| 4077 value = NewPhi(inputs, value, control); | 4079 value = NewPhi(inputs, value, control); |
| 4078 value->ReplaceInput(inputs - 1, other); | 4080 value->ReplaceInput(inputs - 1, other); |
| 4079 } | 4081 } |
| 4080 return value; | 4082 return value; |
| 4081 } | 4083 } |
| 4082 | 4084 |
| 4083 } // namespace compiler | 4085 } // namespace compiler |
| 4084 } // namespace internal | 4086 } // namespace internal |
| 4085 } // namespace v8 | 4087 } // namespace v8 |
| OLD | NEW |