| 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 3413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3424 TypeFeedbackId id) { | 3424 TypeFeedbackId id) { |
| 3425 if (js_type_feedback) { | 3425 if (js_type_feedback) { |
| 3426 js_type_feedback->Record(node, id); | 3426 js_type_feedback->Record(node, id); |
| 3427 } | 3427 } |
| 3428 return node; | 3428 return node; |
| 3429 } | 3429 } |
| 3430 | 3430 |
| 3431 | 3431 |
| 3432 Node* AstGraphBuilder::BuildKeyedLoad(Node* object, Node* key, | 3432 Node* AstGraphBuilder::BuildKeyedLoad(Node* object, Node* key, |
| 3433 const VectorSlotPair& feedback) { | 3433 const VectorSlotPair& feedback) { |
| 3434 const Operator* op = javascript()->LoadProperty(feedback); | 3434 const Operator* op = javascript()->LoadProperty(feedback, language_mode()); |
| 3435 return Record(js_type_feedback_, NewNode(op, object, key), feedback.slot()); | 3435 return Record(js_type_feedback_, NewNode(op, object, key), feedback.slot()); |
| 3436 } | 3436 } |
| 3437 | 3437 |
| 3438 | 3438 |
| 3439 Node* AstGraphBuilder::BuildNamedLoad(Node* object, Handle<Name> name, | 3439 Node* AstGraphBuilder::BuildNamedLoad(Node* object, Handle<Name> name, |
| 3440 const VectorSlotPair& feedback, | 3440 const VectorSlotPair& feedback, |
| 3441 ContextualMode mode) { | 3441 ContextualMode mode) { |
| 3442 const Operator* op = | 3442 const Operator* op = javascript()->LoadNamed(MakeUnique(name), feedback, |
| 3443 javascript()->LoadNamed(MakeUnique(name), feedback, mode); | 3443 language_mode(), mode); |
| 3444 return Record(js_type_feedback_, NewNode(op, object), feedback.slot()); | 3444 return Record(js_type_feedback_, NewNode(op, object), feedback.slot()); |
| 3445 } | 3445 } |
| 3446 | 3446 |
| 3447 | 3447 |
| 3448 Node* AstGraphBuilder::BuildKeyedStore(Node* object, Node* key, Node* value, | 3448 Node* AstGraphBuilder::BuildKeyedStore(Node* object, Node* key, Node* value, |
| 3449 TypeFeedbackId id) { | 3449 TypeFeedbackId id) { |
| 3450 const Operator* op = javascript()->StoreProperty(language_mode()); | 3450 const Operator* op = javascript()->StoreProperty(language_mode()); |
| 3451 return Record(js_type_feedback_, NewNode(op, object, key, value), id); | 3451 return Record(js_type_feedback_, NewNode(op, object, key, value), id); |
| 3452 } | 3452 } |
| 3453 | 3453 |
| 3454 | 3454 |
| 3455 Node* AstGraphBuilder::BuildNamedStore(Node* object, Handle<Name> name, | 3455 Node* AstGraphBuilder::BuildNamedStore(Node* object, Handle<Name> name, |
| 3456 Node* value, TypeFeedbackId id) { | 3456 Node* value, TypeFeedbackId id) { |
| 3457 const Operator* op = | 3457 const Operator* op = |
| 3458 javascript()->StoreNamed(language_mode(), MakeUnique(name)); | 3458 javascript()->StoreNamed(language_mode(), MakeUnique(name)); |
| 3459 return Record(js_type_feedback_, NewNode(op, object, value), id); | 3459 return Record(js_type_feedback_, NewNode(op, object, value), id); |
| 3460 } | 3460 } |
| 3461 | 3461 |
| 3462 | 3462 |
| 3463 Node* AstGraphBuilder::BuildNamedSuperLoad(Node* receiver, Node* home_object, | 3463 Node* AstGraphBuilder::BuildNamedSuperLoad(Node* receiver, Node* home_object, |
| 3464 Handle<Name> name, | 3464 Handle<Name> name, |
| 3465 const VectorSlotPair& feedback) { | 3465 const VectorSlotPair& feedback) { |
| 3466 Node* name_node = jsgraph()->Constant(name); | 3466 Node* name_node = jsgraph()->Constant(name); |
| 3467 const Operator* op = javascript()->CallRuntime(Runtime::kLoadFromSuper, 3); | 3467 Node* language = jsgraph()->Constant(language_mode()); |
| 3468 Node* value = NewNode(op, receiver, home_object, name_node); | 3468 const Operator* op = javascript()->CallRuntime(Runtime::kLoadFromSuper, 4); |
| 3469 Node* value = NewNode(op, receiver, home_object, name_node, language); |
| 3469 return Record(js_type_feedback_, value, feedback.slot()); | 3470 return Record(js_type_feedback_, value, feedback.slot()); |
| 3470 } | 3471 } |
| 3471 | 3472 |
| 3472 | 3473 |
| 3473 Node* AstGraphBuilder::BuildKeyedSuperLoad(Node* receiver, Node* home_object, | 3474 Node* AstGraphBuilder::BuildKeyedSuperLoad(Node* receiver, Node* home_object, |
| 3474 Node* key, | 3475 Node* key, |
| 3475 const VectorSlotPair& feedback) { | 3476 const VectorSlotPair& feedback) { |
| 3477 Node* language = jsgraph()->Constant(language_mode()); |
| 3476 const Operator* op = | 3478 const Operator* op = |
| 3477 javascript()->CallRuntime(Runtime::kLoadKeyedFromSuper, 3); | 3479 javascript()->CallRuntime(Runtime::kLoadKeyedFromSuper, 4); |
| 3478 Node* value = NewNode(op, receiver, home_object, key); | 3480 Node* value = NewNode(op, receiver, home_object, key, language); |
| 3479 return Record(js_type_feedback_, value, feedback.slot()); | 3481 return Record(js_type_feedback_, value, feedback.slot()); |
| 3480 } | 3482 } |
| 3481 | 3483 |
| 3482 | 3484 |
| 3483 Node* AstGraphBuilder::BuildKeyedSuperStore(Node* receiver, Node* home_object, | 3485 Node* AstGraphBuilder::BuildKeyedSuperStore(Node* receiver, Node* home_object, |
| 3484 Node* key, Node* value, | 3486 Node* key, Node* value, |
| 3485 TypeFeedbackId id) { | 3487 TypeFeedbackId id) { |
| 3486 Runtime::FunctionId function_id = is_strict(language_mode()) | 3488 Runtime::FunctionId function_id = is_strict(language_mode()) |
| 3487 ? Runtime::kStoreKeyedToSuper_Strict | 3489 ? Runtime::kStoreKeyedToSuper_Strict |
| 3488 : Runtime::kStoreKeyedToSuper_Sloppy; | 3490 : Runtime::kStoreKeyedToSuper_Sloppy; |
| (...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4039 // Phi does not exist yet, introduce one. | 4041 // Phi does not exist yet, introduce one. |
| 4040 value = NewPhi(inputs, value, control); | 4042 value = NewPhi(inputs, value, control); |
| 4041 value->ReplaceInput(inputs - 1, other); | 4043 value->ReplaceInput(inputs - 1, other); |
| 4042 } | 4044 } |
| 4043 return value; | 4045 return value; |
| 4044 } | 4046 } |
| 4045 | 4047 |
| 4046 } // namespace compiler | 4048 } // namespace compiler |
| 4047 } // namespace internal | 4049 } // namespace internal |
| 4048 } // namespace v8 | 4050 } // namespace v8 |
| OLD | NEW |