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

Side by Side Diff: src/hydrogen.cc

Issue 1227893005: TypeofMode replaces TypeofState and ContextualMode. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Addressed comments 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/hydrogen.h ('k') | src/hydrogen-instructions.h » ('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 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/hydrogen.h" 5 #include "src/hydrogen.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 8
9 #include "src/v8.h" 9 #include "src/v8.h"
10 10
(...skipping 4026 matching lines...) Expand 10 before | Expand all | Expand 10 after
4037 } 4037 }
4038 } 4038 }
4039 4039
4040 4040
4041 // Implementation of utility classes to represent an expression's context in 4041 // Implementation of utility classes to represent an expression's context in
4042 // the AST. 4042 // the AST.
4043 AstContext::AstContext(HOptimizedGraphBuilder* owner, Expression::Context kind) 4043 AstContext::AstContext(HOptimizedGraphBuilder* owner, Expression::Context kind)
4044 : owner_(owner), 4044 : owner_(owner),
4045 kind_(kind), 4045 kind_(kind),
4046 outer_(owner->ast_context()), 4046 outer_(owner->ast_context()),
4047 for_typeof_(false) { 4047 typeof_mode_(NOT_INSIDE_TYPEOF) {
4048 owner->set_ast_context(this); // Push. 4048 owner->set_ast_context(this); // Push.
4049 #ifdef DEBUG 4049 #ifdef DEBUG
4050 DCHECK(owner->environment()->frame_type() == JS_FUNCTION); 4050 DCHECK(owner->environment()->frame_type() == JS_FUNCTION);
4051 original_length_ = owner->environment()->length(); 4051 original_length_ = owner->environment()->length();
4052 #endif 4052 #endif
4053 } 4053 }
4054 4054
4055 4055
4056 AstContext::~AstContext() { 4056 AstContext::~AstContext() {
4057 owner_->set_ast_context(outer_); // Pop. 4057 owner_->set_ast_context(outer_); // Pop.
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
4285 4285
4286 void HOptimizedGraphBuilder::VisitForValue(Expression* expr, 4286 void HOptimizedGraphBuilder::VisitForValue(Expression* expr,
4287 ArgumentsAllowedFlag flag) { 4287 ArgumentsAllowedFlag flag) {
4288 ValueContext for_value(this, flag); 4288 ValueContext for_value(this, flag);
4289 Visit(expr); 4289 Visit(expr);
4290 } 4290 }
4291 4291
4292 4292
4293 void HOptimizedGraphBuilder::VisitForTypeOf(Expression* expr) { 4293 void HOptimizedGraphBuilder::VisitForTypeOf(Expression* expr) {
4294 ValueContext for_value(this, ARGUMENTS_NOT_ALLOWED); 4294 ValueContext for_value(this, ARGUMENTS_NOT_ALLOWED);
4295 for_value.set_for_typeof(true); 4295 for_value.set_typeof_mode(INSIDE_TYPEOF);
4296 Visit(expr); 4296 Visit(expr);
4297 } 4297 }
4298 4298
4299 4299
4300 void HOptimizedGraphBuilder::VisitForControl(Expression* expr, 4300 void HOptimizedGraphBuilder::VisitForControl(Expression* expr,
4301 HBasicBlock* true_block, 4301 HBasicBlock* true_block,
4302 HBasicBlock* false_block) { 4302 HBasicBlock* false_block) {
4303 TestContext for_test(this, expr, true_block, false_block); 4303 TestContext for_test(this, expr, true_block, false_block);
4304 Visit(expr); 4304 Visit(expr);
4305 } 4305 }
(...skipping 1250 matching lines...) Expand 10 before | Expand all | Expand 10 after
5556 field_maps, HType::HeapObject()); 5556 field_maps, HType::HeapObject());
5557 } 5557 }
5558 instr->ClearDependsOnFlag(kInobjectFields); 5558 instr->ClearDependsOnFlag(kInobjectFields);
5559 instr->SetDependsOnFlag(kGlobalVars); 5559 instr->SetDependsOnFlag(kGlobalVars);
5560 return ast_context()->ReturnInstruction(instr, expr->id()); 5560 return ast_context()->ReturnInstruction(instr, expr->id());
5561 } 5561 }
5562 } else { 5562 } else {
5563 HValue* global_object = Add<HLoadNamedField>( 5563 HValue* global_object = Add<HLoadNamedField>(
5564 context(), nullptr, 5564 context(), nullptr,
5565 HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX)); 5565 HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX));
5566 HLoadGlobalGeneric* instr = 5566 HLoadGlobalGeneric* instr = New<HLoadGlobalGeneric>(
5567 New<HLoadGlobalGeneric>(global_object, 5567 global_object, variable->name(), ast_context()->typeof_mode());
5568 variable->name(),
5569 ast_context()->is_for_typeof());
5570 instr->SetVectorAndSlot(handle(current_feedback_vector(), isolate()), 5568 instr->SetVectorAndSlot(handle(current_feedback_vector(), isolate()),
5571 expr->VariableFeedbackSlot()); 5569 expr->VariableFeedbackSlot());
5572 return ast_context()->ReturnInstruction(instr, expr->id()); 5570 return ast_context()->ReturnInstruction(instr, expr->id());
5573 } 5571 }
5574 } 5572 }
5575 5573
5576 case VariableLocation::PARAMETER: 5574 case VariableLocation::PARAMETER:
5577 case VariableLocation::LOCAL: { 5575 case VariableLocation::LOCAL: {
5578 HValue* value = LookupAndMakeLive(variable); 5576 HValue* value = LookupAndMakeLive(variable);
5579 if (value == graph()->GetConstantHole()) { 5577 if (value == graph()->GetConstantHole()) {
(...skipping 7719 matching lines...) Expand 10 before | Expand all | Expand 10 after
13299 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); 13297 isolate()->GetHTracer()->TraceHydrogen(name(), graph_);
13300 } 13298 }
13301 13299
13302 #ifdef DEBUG 13300 #ifdef DEBUG
13303 graph_->Verify(false); // No full verify. 13301 graph_->Verify(false); // No full verify.
13304 #endif 13302 #endif
13305 } 13303 }
13306 13304
13307 } // namespace internal 13305 } // namespace internal
13308 } // namespace v8 13306 } // namespace v8
OLDNEW
« no previous file with comments | « src/hydrogen.h ('k') | src/hydrogen-instructions.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698