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 #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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |