OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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_MIPS64 | 5 #if V8_TARGET_ARCH_MIPS64 |
6 | 6 |
7 // Note on Mips implementation: | 7 // Note on Mips implementation: |
8 // | 8 // |
9 // The result_register() for mips is the 'v0' register, which is defined | 9 // The result_register() for mips is the 'v0' register, which is defined |
10 // by the ABI to contain function return values. However, the first | 10 // by the ABI to contain function return values. However, the first |
(...skipping 1547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1558 __ Drop(3); | 1558 __ Drop(3); |
1559 } | 1559 } |
1560 break; | 1560 break; |
1561 case ObjectLiteral::Property::PROTOTYPE: | 1561 case ObjectLiteral::Property::PROTOTYPE: |
1562 // Duplicate receiver on stack. | 1562 // Duplicate receiver on stack. |
1563 __ ld(a0, MemOperand(sp)); | 1563 __ ld(a0, MemOperand(sp)); |
1564 __ push(a0); | 1564 __ push(a0); |
1565 VisitForStackValue(value); | 1565 VisitForStackValue(value); |
1566 DCHECK(property->emit_store()); | 1566 DCHECK(property->emit_store()); |
1567 __ CallRuntime(Runtime::kInternalSetPrototype); | 1567 __ CallRuntime(Runtime::kInternalSetPrototype); |
| 1568 PrepareForBailoutForId(expr->GetIdForPropertySet(property_index), |
| 1569 NO_REGISTERS); |
1568 break; | 1570 break; |
1569 case ObjectLiteral::Property::GETTER: | 1571 case ObjectLiteral::Property::GETTER: |
1570 if (property->emit_store()) { | 1572 if (property->emit_store()) { |
1571 accessor_table.lookup(key)->second->getter = property; | 1573 accessor_table.lookup(key)->second->getter = property; |
1572 } | 1574 } |
1573 break; | 1575 break; |
1574 case ObjectLiteral::Property::SETTER: | 1576 case ObjectLiteral::Property::SETTER: |
1575 if (property->emit_store()) { | 1577 if (property->emit_store()) { |
1576 accessor_table.lookup(key)->second->setter = property; | 1578 accessor_table.lookup(key)->second->setter = property; |
1577 } | 1579 } |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1613 } | 1615 } |
1614 | 1616 |
1615 __ ld(a0, MemOperand(sp)); // Duplicate receiver. | 1617 __ ld(a0, MemOperand(sp)); // Duplicate receiver. |
1616 __ push(a0); | 1618 __ push(a0); |
1617 | 1619 |
1618 if (property->kind() == ObjectLiteral::Property::PROTOTYPE) { | 1620 if (property->kind() == ObjectLiteral::Property::PROTOTYPE) { |
1619 DCHECK(!property->is_computed_name()); | 1621 DCHECK(!property->is_computed_name()); |
1620 VisitForStackValue(value); | 1622 VisitForStackValue(value); |
1621 DCHECK(property->emit_store()); | 1623 DCHECK(property->emit_store()); |
1622 __ CallRuntime(Runtime::kInternalSetPrototype); | 1624 __ CallRuntime(Runtime::kInternalSetPrototype); |
| 1625 PrepareForBailoutForId(expr->GetIdForPropertySet(property_index), |
| 1626 NO_REGISTERS); |
1623 } else { | 1627 } else { |
1624 EmitPropertyKey(property, expr->GetIdForProperty(property_index)); | 1628 EmitPropertyKey(property, expr->GetIdForPropertyName(property_index)); |
1625 VisitForStackValue(value); | 1629 VisitForStackValue(value); |
1626 if (NeedsHomeObject(value)) { | 1630 if (NeedsHomeObject(value)) { |
1627 EmitSetHomeObject(value, 2, property->GetSlot()); | 1631 EmitSetHomeObject(value, 2, property->GetSlot()); |
1628 } | 1632 } |
1629 | 1633 |
1630 switch (property->kind()) { | 1634 switch (property->kind()) { |
1631 case ObjectLiteral::Property::CONSTANT: | 1635 case ObjectLiteral::Property::CONSTANT: |
1632 case ObjectLiteral::Property::MATERIALIZED_LITERAL: | 1636 case ObjectLiteral::Property::MATERIALIZED_LITERAL: |
1633 case ObjectLiteral::Property::COMPUTED: | 1637 case ObjectLiteral::Property::COMPUTED: |
1634 if (property->emit_store()) { | 1638 if (property->emit_store()) { |
(...skipping 3244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4879 reinterpret_cast<uint64_t>( | 4883 reinterpret_cast<uint64_t>( |
4880 isolate->builtins()->OsrAfterStackCheck()->entry())); | 4884 isolate->builtins()->OsrAfterStackCheck()->entry())); |
4881 return OSR_AFTER_STACK_CHECK; | 4885 return OSR_AFTER_STACK_CHECK; |
4882 } | 4886 } |
4883 | 4887 |
4884 | 4888 |
4885 } // namespace internal | 4889 } // namespace internal |
4886 } // namespace v8 | 4890 } // namespace v8 |
4887 | 4891 |
4888 #endif // V8_TARGET_ARCH_MIPS64 | 4892 #endif // V8_TARGET_ARCH_MIPS64 |
OLD | NEW |