OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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/crankshaft/hydrogen.h" | 5 #include "src/crankshaft/hydrogen.h" |
6 | 6 |
7 #include <sstream> | 7 #include <sstream> |
8 | 8 |
9 #include "src/allocation-site-scopes.h" | 9 #include "src/allocation-site-scopes.h" |
10 #include "src/ast/ast-numbering.h" | 10 #include "src/ast/ast-numbering.h" |
(...skipping 5878 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5889 instr = New<HLoadNamedField>(cell_constant, nullptr, access); | 5889 instr = New<HLoadNamedField>(cell_constant, nullptr, access); |
5890 } else { | 5890 } else { |
5891 instr = New<HLoadNamedField>(cell_constant, nullptr, access, | 5891 instr = New<HLoadNamedField>(cell_constant, nullptr, access, |
5892 field_maps, HType::HeapObject()); | 5892 field_maps, HType::HeapObject()); |
5893 } | 5893 } |
5894 instr->ClearDependsOnFlag(kInobjectFields); | 5894 instr->ClearDependsOnFlag(kInobjectFields); |
5895 instr->SetDependsOnFlag(kGlobalVars); | 5895 instr->SetDependsOnFlag(kGlobalVars); |
5896 return ast_context()->ReturnInstruction(instr, expr->id()); | 5896 return ast_context()->ReturnInstruction(instr, expr->id()); |
5897 } | 5897 } |
5898 } else { | 5898 } else { |
5899 HValue* global_object = Add<HLoadNamedField>( | |
5900 BuildGetNativeContext(), nullptr, | |
5901 HObjectAccess::ForContextSlot(Context::EXTENSION_INDEX)); | |
5902 Handle<TypeFeedbackVector> vector(current_feedback_vector(), isolate()); | 5899 Handle<TypeFeedbackVector> vector(current_feedback_vector(), isolate()); |
5903 HLoadGlobalGeneric* instr = New<HLoadGlobalGeneric>( | 5900 HLoadGlobalGeneric* instr = New<HLoadGlobalGeneric>( |
5904 global_object, variable->name(), ast_context()->typeof_mode(), | 5901 variable->name(), ast_context()->typeof_mode(), vector, |
5905 vector, expr->VariableFeedbackSlot()); | 5902 expr->VariableFeedbackSlot()); |
5906 return ast_context()->ReturnInstruction(instr, expr->id()); | 5903 return ast_context()->ReturnInstruction(instr, expr->id()); |
5907 } | 5904 } |
5908 } | 5905 } |
5909 | 5906 |
5910 case VariableLocation::PARAMETER: | 5907 case VariableLocation::PARAMETER: |
5911 case VariableLocation::LOCAL: { | 5908 case VariableLocation::LOCAL: { |
5912 HValue* value = LookupAndMakeLive(variable); | 5909 HValue* value = LookupAndMakeLive(variable); |
5913 if (value == graph()->GetConstantHole()) { | 5910 if (value == graph()->GetConstantHole()) { |
5914 DCHECK(IsDeclaredVariableMode(variable->mode()) && | 5911 DCHECK(IsDeclaredVariableMode(variable->mode()) && |
5915 variable->mode() != VAR); | 5912 variable->mode() != VAR); |
(...skipping 7775 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13691 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 13688 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
13692 } | 13689 } |
13693 | 13690 |
13694 #ifdef DEBUG | 13691 #ifdef DEBUG |
13695 graph_->Verify(false); // No full verify. | 13692 graph_->Verify(false); // No full verify. |
13696 #endif | 13693 #endif |
13697 } | 13694 } |
13698 | 13695 |
13699 } // namespace internal | 13696 } // namespace internal |
13700 } // namespace v8 | 13697 } // namespace v8 |
OLD | NEW |