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

Side by Side Diff: src/compiler/ast-graph-builder.cc

Issue 1199983002: [strong] Implement strong property access semantics (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: add TODOs Created 5 years, 5 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
« no previous file with comments | « src/code-stubs-hydrogen.cc ('k') | src/compiler/js-generic-lowering.cc » ('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 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 3482 matching lines...) Expand 10 before | Expand all | Expand 10 after
3493 TypeFeedbackId id) { 3493 TypeFeedbackId id) {
3494 if (js_type_feedback) { 3494 if (js_type_feedback) {
3495 js_type_feedback->Record(node, id); 3495 js_type_feedback->Record(node, id);
3496 } 3496 }
3497 return node; 3497 return node;
3498 } 3498 }
3499 3499
3500 3500
3501 Node* AstGraphBuilder::BuildKeyedLoad(Node* object, Node* key, 3501 Node* AstGraphBuilder::BuildKeyedLoad(Node* object, Node* key,
3502 const VectorSlotPair& feedback) { 3502 const VectorSlotPair& feedback) {
3503 const Operator* op = javascript()->LoadProperty(feedback); 3503 const Operator* op = javascript()->LoadProperty(feedback, language_mode());
3504 Node* node = NewNode(op, object, key, BuildLoadFeedbackVector()); 3504 Node* node = NewNode(op, object, key, BuildLoadFeedbackVector());
3505 return Record(js_type_feedback_, node, feedback.slot()); 3505 return Record(js_type_feedback_, node, feedback.slot());
3506 } 3506 }
3507 3507
3508 3508
3509 Node* AstGraphBuilder::BuildNamedLoad(Node* object, Handle<Name> name, 3509 Node* AstGraphBuilder::BuildNamedLoad(Node* object, Handle<Name> name,
3510 const VectorSlotPair& feedback) { 3510 const VectorSlotPair& feedback) {
3511 const Operator* op = javascript()->LoadNamed(MakeUnique(name), feedback); 3511 const Operator* op =
3512 javascript()->LoadNamed(MakeUnique(name), feedback, language_mode());
3512 Node* node = NewNode(op, object, BuildLoadFeedbackVector()); 3513 Node* node = NewNode(op, object, BuildLoadFeedbackVector());
3513 return Record(js_type_feedback_, node, feedback.slot()); 3514 return Record(js_type_feedback_, node, feedback.slot());
3514 } 3515 }
3515 3516
3516 3517
3517 Node* AstGraphBuilder::BuildKeyedStore(Node* object, Node* key, Node* value, 3518 Node* AstGraphBuilder::BuildKeyedStore(Node* object, Node* key, Node* value,
3518 const VectorSlotPair& feedback, 3519 const VectorSlotPair& feedback,
3519 TypeFeedbackId id) { 3520 TypeFeedbackId id) {
3520 const Operator* op = javascript()->StoreProperty(language_mode(), feedback); 3521 const Operator* op = javascript()->StoreProperty(language_mode(), feedback);
3521 Node* node = NewNode(op, object, key, value, BuildLoadFeedbackVector()); 3522 Node* node = NewNode(op, object, key, value, BuildLoadFeedbackVector());
(...skipping 15 matching lines...) Expand all
3537 return Record(js_type_feedback_, node, feedback.slot()); 3538 return Record(js_type_feedback_, node, feedback.slot());
3538 } 3539 }
3539 return Record(js_type_feedback_, node, id); 3540 return Record(js_type_feedback_, node, id);
3540 } 3541 }
3541 3542
3542 3543
3543 Node* AstGraphBuilder::BuildNamedSuperLoad(Node* receiver, Node* home_object, 3544 Node* AstGraphBuilder::BuildNamedSuperLoad(Node* receiver, Node* home_object,
3544 Handle<Name> name, 3545 Handle<Name> name,
3545 const VectorSlotPair& feedback) { 3546 const VectorSlotPair& feedback) {
3546 Node* name_node = jsgraph()->Constant(name); 3547 Node* name_node = jsgraph()->Constant(name);
3547 const Operator* op = javascript()->CallRuntime(Runtime::kLoadFromSuper, 3); 3548 Node* language = jsgraph()->Constant(language_mode());
3548 Node* node = NewNode(op, receiver, home_object, name_node); 3549 const Operator* op = javascript()->CallRuntime(Runtime::kLoadFromSuper, 4);
3550 Node* node = NewNode(op, receiver, home_object, name_node, language);
3549 return Record(js_type_feedback_, node, feedback.slot()); 3551 return Record(js_type_feedback_, node, feedback.slot());
3550 } 3552 }
3551 3553
3552 3554
3553 Node* AstGraphBuilder::BuildKeyedSuperLoad(Node* receiver, Node* home_object, 3555 Node* AstGraphBuilder::BuildKeyedSuperLoad(Node* receiver, Node* home_object,
3554 Node* key, 3556 Node* key,
3555 const VectorSlotPair& feedback) { 3557 const VectorSlotPair& feedback) {
3558 Node* language = jsgraph()->Constant(language_mode());
3556 const Operator* op = 3559 const Operator* op =
3557 javascript()->CallRuntime(Runtime::kLoadKeyedFromSuper, 3); 3560 javascript()->CallRuntime(Runtime::kLoadKeyedFromSuper, 4);
3558 Node* node = NewNode(op, receiver, home_object, key); 3561 Node* node = NewNode(op, receiver, home_object, key, language);
3559 return Record(js_type_feedback_, node, feedback.slot()); 3562 return Record(js_type_feedback_, node, feedback.slot());
3560 } 3563 }
3561 3564
3562 3565
3563 Node* AstGraphBuilder::BuildKeyedSuperStore(Node* receiver, Node* home_object, 3566 Node* AstGraphBuilder::BuildKeyedSuperStore(Node* receiver, Node* home_object,
3564 Node* key, Node* value, 3567 Node* key, Node* value,
3565 TypeFeedbackId id) { 3568 TypeFeedbackId id) {
3566 Runtime::FunctionId function_id = is_strict(language_mode()) 3569 Runtime::FunctionId function_id = is_strict(language_mode())
3567 ? Runtime::kStoreKeyedToSuper_Strict 3570 ? Runtime::kStoreKeyedToSuper_Strict
3568 : Runtime::kStoreKeyedToSuper_Sloppy; 3571 : Runtime::kStoreKeyedToSuper_Sloppy;
(...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after
4174 // Phi does not exist yet, introduce one. 4177 // Phi does not exist yet, introduce one.
4175 value = NewPhi(inputs, value, control); 4178 value = NewPhi(inputs, value, control);
4176 value->ReplaceInput(inputs - 1, other); 4179 value->ReplaceInput(inputs - 1, other);
4177 } 4180 }
4178 return value; 4181 return value;
4179 } 4182 }
4180 4183
4181 } // namespace compiler 4184 } // namespace compiler
4182 } // namespace internal 4185 } // namespace internal
4183 } // namespace v8 4186 } // namespace v8
OLDNEW
« no previous file with comments | « src/code-stubs-hydrogen.cc ('k') | src/compiler/js-generic-lowering.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698