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

Side by Side Diff: src/hydrogen.cc

Issue 1016803002: Remove PropertyCell space (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 9 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/heap/spaces.cc ('k') | src/hydrogen-gvn.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 5340 matching lines...) Expand 10 before | Expand all | Expand 10 after
5351 PropertyCell::AddDependentCompilationInfo(cell, top_info()); 5351 PropertyCell::AddDependentCompilationInfo(cell, top_info());
5352 if (it.property_details().cell_type() == PropertyCellType::kConstant) { 5352 if (it.property_details().cell_type() == PropertyCellType::kConstant) {
5353 Handle<Object> constant_object(cell->value(), isolate()); 5353 Handle<Object> constant_object(cell->value(), isolate());
5354 if (constant_object->IsConsString()) { 5354 if (constant_object->IsConsString()) {
5355 constant_object = 5355 constant_object =
5356 String::Flatten(Handle<String>::cast(constant_object)); 5356 String::Flatten(Handle<String>::cast(constant_object));
5357 } 5357 }
5358 HConstant* constant = New<HConstant>(constant_object); 5358 HConstant* constant = New<HConstant>(constant_object);
5359 return ast_context()->ReturnInstruction(constant, expr->id()); 5359 return ast_context()->ReturnInstruction(constant, expr->id());
5360 } else { 5360 } else {
5361 HLoadGlobalCell* instr = 5361 HConstant* cell_constant = Add<HConstant>(cell);
5362 New<HLoadGlobalCell>(cell, it.property_details()); 5362 HLoadNamedField* instr = New<HLoadNamedField>(
5363 cell_constant, nullptr, HObjectAccess::ForPropertyCellValue());
5364 instr->ClearDependsOnFlag(kInobjectFields);
5365 instr->SetDependsOnFlag(kGlobalVars);
5363 return ast_context()->ReturnInstruction(instr, expr->id()); 5366 return ast_context()->ReturnInstruction(instr, expr->id());
5364 } 5367 }
5365 } else { 5368 } else {
5366 HValue* global_object = Add<HLoadNamedField>( 5369 HValue* global_object = Add<HLoadNamedField>(
5367 context(), nullptr, 5370 context(), nullptr,
5368 HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX)); 5371 HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX));
5369 HLoadGlobalGeneric* instr = 5372 HLoadGlobalGeneric* instr =
5370 New<HLoadGlobalGeneric>(global_object, 5373 New<HLoadGlobalGeneric>(global_object,
5371 variable->name(), 5374 variable->name(),
5372 ast_context()->is_for_typeof()); 5375 ast_context()->is_for_typeof());
(...skipping 1158 matching lines...) Expand 10 before | Expand all | Expand 10 after
6531 } else { 6534 } else {
6532 builder.If<HCompareObjectEqAndBranch>(value, c_constant); 6535 builder.If<HCompareObjectEqAndBranch>(value, c_constant);
6533 } 6536 }
6534 builder.Then(); 6537 builder.Then();
6535 builder.Else(); 6538 builder.Else();
6536 Add<HDeoptimize>(Deoptimizer::kConstantGlobalVariableAssignment, 6539 Add<HDeoptimize>(Deoptimizer::kConstantGlobalVariableAssignment,
6537 Deoptimizer::EAGER); 6540 Deoptimizer::EAGER);
6538 builder.End(); 6541 builder.End();
6539 } 6542 }
6540 } 6543 }
6541 HInstruction* instr = 6544 HConstant* cell_constant = Add<HConstant>(cell);
6542 Add<HStoreGlobalCell>(value, cell, it.property_details()); 6545 HInstruction* instr = Add<HStoreNamedField>(
6546 cell_constant, HObjectAccess::ForPropertyCellValue(), value);
6547 instr->ClearChangesFlag(kInobjectFields);
6548 instr->SetChangesFlag(kGlobalVars);
6543 if (instr->HasObservableSideEffects()) { 6549 if (instr->HasObservableSideEffects()) {
6544 Add<HSimulate>(ast_id, REMOVABLE_SIMULATE); 6550 Add<HSimulate>(ast_id, REMOVABLE_SIMULATE);
6545 } 6551 }
6546 } else { 6552 } else {
6547 HValue* global_object = Add<HLoadNamedField>( 6553 HValue* global_object = Add<HLoadNamedField>(
6548 context(), nullptr, 6554 context(), nullptr,
6549 HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX)); 6555 HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX));
6550 HStoreNamedGeneric* instr = 6556 HStoreNamedGeneric* instr =
6551 Add<HStoreNamedGeneric>(global_object, var->name(), value, 6557 Add<HStoreNamedGeneric>(global_object, var->name(), value,
6552 function_language_mode(), PREMONOMORPHIC); 6558 function_language_mode(), PREMONOMORPHIC);
(...skipping 6837 matching lines...) Expand 10 before | Expand all | Expand 10 after
13390 if (ShouldProduceTraceOutput()) { 13396 if (ShouldProduceTraceOutput()) {
13391 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); 13397 isolate()->GetHTracer()->TraceHydrogen(name(), graph_);
13392 } 13398 }
13393 13399
13394 #ifdef DEBUG 13400 #ifdef DEBUG
13395 graph_->Verify(false); // No full verify. 13401 graph_->Verify(false); // No full verify.
13396 #endif 13402 #endif
13397 } 13403 }
13398 13404
13399 } } // namespace v8::internal 13405 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/heap/spaces.cc ('k') | src/hydrogen-gvn.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698