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

Side by Side Diff: src/full-codegen/ppc/full-codegen-ppc.cc

Issue 1555023002: [turbofan] Add deopt point for InternalSetPrototype in VisitObjectLiteral. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 11 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
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 #if V8_TARGET_ARCH_PPC 5 #if V8_TARGET_ARCH_PPC
6 6
7 #include "src/ast/scopes.h" 7 #include "src/ast/scopes.h"
8 #include "src/code-factory.h" 8 #include "src/code-factory.h"
9 #include "src/code-stubs.h" 9 #include "src/code-stubs.h"
10 #include "src/codegen.h" 10 #include "src/codegen.h"
(...skipping 1511 matching lines...) Expand 10 before | Expand all | Expand 10 after
1522 __ Drop(3); 1522 __ Drop(3);
1523 } 1523 }
1524 break; 1524 break;
1525 case ObjectLiteral::Property::PROTOTYPE: 1525 case ObjectLiteral::Property::PROTOTYPE:
1526 // Duplicate receiver on stack. 1526 // Duplicate receiver on stack.
1527 __ LoadP(r3, MemOperand(sp)); 1527 __ LoadP(r3, MemOperand(sp));
1528 __ push(r3); 1528 __ push(r3);
1529 VisitForStackValue(value); 1529 VisitForStackValue(value);
1530 DCHECK(property->emit_store()); 1530 DCHECK(property->emit_store());
1531 __ CallRuntime(Runtime::kInternalSetPrototype); 1531 __ CallRuntime(Runtime::kInternalSetPrototype);
1532 PrepareForBailoutForId(expr->GetIdForPropertySet(property_index),
1533 NO_REGISTERS);
1532 break; 1534 break;
1533 case ObjectLiteral::Property::GETTER: 1535 case ObjectLiteral::Property::GETTER:
1534 if (property->emit_store()) { 1536 if (property->emit_store()) {
1535 accessor_table.lookup(key)->second->getter = property; 1537 accessor_table.lookup(key)->second->getter = property;
1536 } 1538 }
1537 break; 1539 break;
1538 case ObjectLiteral::Property::SETTER: 1540 case ObjectLiteral::Property::SETTER:
1539 if (property->emit_store()) { 1541 if (property->emit_store()) {
1540 accessor_table.lookup(key)->second->setter = property; 1542 accessor_table.lookup(key)->second->setter = property;
1541 } 1543 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1576 } 1578 }
1577 1579
1578 __ LoadP(r3, MemOperand(sp)); // Duplicate receiver. 1580 __ LoadP(r3, MemOperand(sp)); // Duplicate receiver.
1579 __ push(r3); 1581 __ push(r3);
1580 1582
1581 if (property->kind() == ObjectLiteral::Property::PROTOTYPE) { 1583 if (property->kind() == ObjectLiteral::Property::PROTOTYPE) {
1582 DCHECK(!property->is_computed_name()); 1584 DCHECK(!property->is_computed_name());
1583 VisitForStackValue(value); 1585 VisitForStackValue(value);
1584 DCHECK(property->emit_store()); 1586 DCHECK(property->emit_store());
1585 __ CallRuntime(Runtime::kInternalSetPrototype); 1587 __ CallRuntime(Runtime::kInternalSetPrototype);
1588 PrepareForBailoutForId(expr->GetIdForPropertySet(property_index),
1589 NO_REGISTERS);
1586 } else { 1590 } else {
1587 EmitPropertyKey(property, expr->GetIdForProperty(property_index)); 1591 EmitPropertyKey(property, expr->GetIdForPropertyName(property_index));
1588 VisitForStackValue(value); 1592 VisitForStackValue(value);
1589 if (NeedsHomeObject(value)) { 1593 if (NeedsHomeObject(value)) {
1590 EmitSetHomeObject(value, 2, property->GetSlot()); 1594 EmitSetHomeObject(value, 2, property->GetSlot());
1591 } 1595 }
1592 1596
1593 switch (property->kind()) { 1597 switch (property->kind()) {
1594 case ObjectLiteral::Property::CONSTANT: 1598 case ObjectLiteral::Property::CONSTANT:
1595 case ObjectLiteral::Property::MATERIALIZED_LITERAL: 1599 case ObjectLiteral::Property::MATERIALIZED_LITERAL:
1596 case ObjectLiteral::Property::COMPUTED: 1600 case ObjectLiteral::Property::COMPUTED:
1597 if (property->emit_store()) { 1601 if (property->emit_store()) {
(...skipping 3257 matching lines...) Expand 10 before | Expand all | Expand 10 after
4855 return ON_STACK_REPLACEMENT; 4859 return ON_STACK_REPLACEMENT;
4856 } 4860 }
4857 4861
4858 DCHECK(interrupt_address == 4862 DCHECK(interrupt_address ==
4859 isolate->builtins()->OsrAfterStackCheck()->entry()); 4863 isolate->builtins()->OsrAfterStackCheck()->entry());
4860 return OSR_AFTER_STACK_CHECK; 4864 return OSR_AFTER_STACK_CHECK;
4861 } 4865 }
4862 } // namespace internal 4866 } // namespace internal
4863 } // namespace v8 4867 } // namespace v8
4864 #endif // V8_TARGET_ARCH_PPC 4868 #endif // V8_TARGET_ARCH_PPC
OLDNEW
« no previous file with comments | « src/full-codegen/mips64/full-codegen-mips64.cc ('k') | src/full-codegen/x64/full-codegen-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698