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 1626 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1637 javascript()->CallRuntime(Runtime::kFinalizeClassDefinition, 2); | 1637 javascript()->CallRuntime(Runtime::kFinalizeClassDefinition, 2); |
1638 literal = NewNode(op, literal, proto); | 1638 literal = NewNode(op, literal, proto); |
1639 | 1639 |
1640 // Assign to class variable. | 1640 // Assign to class variable. |
1641 if (expr->scope() != NULL) { | 1641 if (expr->scope() != NULL) { |
1642 DCHECK_NOT_NULL(expr->class_variable_proxy()); | 1642 DCHECK_NOT_NULL(expr->class_variable_proxy()); |
1643 Variable* var = expr->class_variable_proxy()->var(); | 1643 Variable* var = expr->class_variable_proxy()->var(); |
1644 FrameStateBeforeAndAfter states(this, BailoutId::None()); | 1644 FrameStateBeforeAndAfter states(this, BailoutId::None()); |
1645 VectorSlotPair feedback = CreateVectorSlotPair( | 1645 VectorSlotPair feedback = CreateVectorSlotPair( |
1646 expr->NeedsProxySlot() ? expr->ProxySlot() | 1646 expr->NeedsProxySlot() ? expr->ProxySlot() |
1647 : FeedbackVectorICSlot::Invalid()); | 1647 : FeedbackVectorSlot::Invalid()); |
1648 BuildVariableAssignment(var, literal, Token::INIT_CONST, feedback, | 1648 BuildVariableAssignment(var, literal, Token::INIT_CONST, feedback, |
1649 BailoutId::None(), states); | 1649 BailoutId::None(), states); |
1650 } | 1650 } |
1651 ast_context()->ProduceValue(literal); | 1651 ast_context()->ProduceValue(literal); |
1652 } | 1652 } |
1653 | 1653 |
1654 | 1654 |
1655 void AstGraphBuilder::VisitNativeFunctionLiteral(NativeFunctionLiteral* expr) { | 1655 void AstGraphBuilder::VisitNativeFunctionLiteral(NativeFunctionLiteral* expr) { |
1656 UNREACHABLE(); | 1656 UNREACHABLE(); |
1657 } | 1657 } |
(...skipping 1352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3010 ast_context()->ReplaceValue(); | 3010 ast_context()->ReplaceValue(); |
3011 } | 3011 } |
3012 | 3012 |
3013 | 3013 |
3014 LanguageMode AstGraphBuilder::language_mode() const { | 3014 LanguageMode AstGraphBuilder::language_mode() const { |
3015 return info()->language_mode(); | 3015 return info()->language_mode(); |
3016 } | 3016 } |
3017 | 3017 |
3018 | 3018 |
3019 VectorSlotPair AstGraphBuilder::CreateVectorSlotPair( | 3019 VectorSlotPair AstGraphBuilder::CreateVectorSlotPair( |
3020 FeedbackVectorICSlot slot) const { | 3020 FeedbackVectorSlot slot) const { |
3021 return VectorSlotPair(handle(info()->shared_info()->feedback_vector()), slot); | 3021 return VectorSlotPair(handle(info()->shared_info()->feedback_vector()), slot); |
3022 } | 3022 } |
3023 | 3023 |
3024 | 3024 |
3025 uint32_t AstGraphBuilder::ComputeBitsetForDynamicGlobal(Variable* variable) { | 3025 uint32_t AstGraphBuilder::ComputeBitsetForDynamicGlobal(Variable* variable) { |
3026 DCHECK_EQ(DYNAMIC_GLOBAL, variable->mode()); | 3026 DCHECK_EQ(DYNAMIC_GLOBAL, variable->mode()); |
3027 bool found_eval_scope = false; | 3027 bool found_eval_scope = false; |
3028 uint32_t check_depths = 0; | 3028 uint32_t check_depths = 0; |
3029 for (Scope* s = current_scope(); s != nullptr; s = s->outer_scope()) { | 3029 for (Scope* s = current_scope(); s != nullptr; s = s->outer_scope()) { |
3030 if (s->num_heap_slots() <= 0) continue; | 3030 if (s->num_heap_slots() <= 0) continue; |
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3550 PrepareFrameState(store, bailout_id, combine); | 3550 PrepareFrameState(store, bailout_id, combine); |
3551 return store; | 3551 return store; |
3552 } | 3552 } |
3553 } | 3553 } |
3554 UNREACHABLE(); | 3554 UNREACHABLE(); |
3555 return NULL; | 3555 return NULL; |
3556 } | 3556 } |
3557 | 3557 |
3558 | 3558 |
3559 static inline Node* Record(JSTypeFeedbackTable* js_type_feedback, Node* node, | 3559 static inline Node* Record(JSTypeFeedbackTable* js_type_feedback, Node* node, |
3560 FeedbackVectorICSlot slot) { | 3560 FeedbackVectorSlot slot) { |
3561 if (js_type_feedback) { | 3561 if (js_type_feedback) { |
3562 js_type_feedback->Record(node, slot); | 3562 js_type_feedback->Record(node, slot); |
3563 } | 3563 } |
3564 return node; | 3564 return node; |
3565 } | 3565 } |
3566 | 3566 |
3567 | 3567 |
3568 static inline Node* Record(JSTypeFeedbackTable* js_type_feedback, Node* node, | 3568 static inline Node* Record(JSTypeFeedbackTable* js_type_feedback, Node* node, |
3569 TypeFeedbackId id) { | 3569 TypeFeedbackId id) { |
3570 if (js_type_feedback) { | 3570 if (js_type_feedback) { |
(...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4262 // Phi does not exist yet, introduce one. | 4262 // Phi does not exist yet, introduce one. |
4263 value = NewPhi(inputs, value, control); | 4263 value = NewPhi(inputs, value, control); |
4264 value->ReplaceInput(inputs - 1, other); | 4264 value->ReplaceInput(inputs - 1, other); |
4265 } | 4265 } |
4266 return value; | 4266 return value; |
4267 } | 4267 } |
4268 | 4268 |
4269 } // namespace compiler | 4269 } // namespace compiler |
4270 } // namespace internal | 4270 } // namespace internal |
4271 } // namespace v8 | 4271 } // namespace v8 |
OLD | NEW |