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_ARM | 5 #if V8_TARGET_ARCH_ARM |
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 1553 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1564 __ Drop(3); | 1564 __ Drop(3); |
1565 } | 1565 } |
1566 break; | 1566 break; |
1567 case ObjectLiteral::Property::PROTOTYPE: | 1567 case ObjectLiteral::Property::PROTOTYPE: |
1568 // Duplicate receiver on stack. | 1568 // Duplicate receiver on stack. |
1569 __ ldr(r0, MemOperand(sp)); | 1569 __ ldr(r0, MemOperand(sp)); |
1570 __ push(r0); | 1570 __ push(r0); |
1571 VisitForStackValue(value); | 1571 VisitForStackValue(value); |
1572 DCHECK(property->emit_store()); | 1572 DCHECK(property->emit_store()); |
1573 __ CallRuntime(Runtime::kInternalSetPrototype); | 1573 __ CallRuntime(Runtime::kInternalSetPrototype); |
| 1574 PrepareForBailoutForId(expr->GetIdForPropertySet(property_index), |
| 1575 NO_REGISTERS); |
1574 break; | 1576 break; |
1575 | 1577 |
1576 case ObjectLiteral::Property::GETTER: | 1578 case ObjectLiteral::Property::GETTER: |
1577 if (property->emit_store()) { | 1579 if (property->emit_store()) { |
1578 accessor_table.lookup(key)->second->getter = property; | 1580 accessor_table.lookup(key)->second->getter = property; |
1579 } | 1581 } |
1580 break; | 1582 break; |
1581 case ObjectLiteral::Property::SETTER: | 1583 case ObjectLiteral::Property::SETTER: |
1582 if (property->emit_store()) { | 1584 if (property->emit_store()) { |
1583 accessor_table.lookup(key)->second->setter = property; | 1585 accessor_table.lookup(key)->second->setter = property; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1620 } | 1622 } |
1621 | 1623 |
1622 __ ldr(r0, MemOperand(sp)); // Duplicate receiver. | 1624 __ ldr(r0, MemOperand(sp)); // Duplicate receiver. |
1623 __ push(r0); | 1625 __ push(r0); |
1624 | 1626 |
1625 if (property->kind() == ObjectLiteral::Property::PROTOTYPE) { | 1627 if (property->kind() == ObjectLiteral::Property::PROTOTYPE) { |
1626 DCHECK(!property->is_computed_name()); | 1628 DCHECK(!property->is_computed_name()); |
1627 VisitForStackValue(value); | 1629 VisitForStackValue(value); |
1628 DCHECK(property->emit_store()); | 1630 DCHECK(property->emit_store()); |
1629 __ CallRuntime(Runtime::kInternalSetPrototype); | 1631 __ CallRuntime(Runtime::kInternalSetPrototype); |
| 1632 PrepareForBailoutForId(expr->GetIdForPropertySet(property_index), |
| 1633 NO_REGISTERS); |
1630 } else { | 1634 } else { |
1631 EmitPropertyKey(property, expr->GetIdForProperty(property_index)); | 1635 EmitPropertyKey(property, expr->GetIdForPropertyName(property_index)); |
1632 VisitForStackValue(value); | 1636 VisitForStackValue(value); |
1633 if (NeedsHomeObject(value)) { | 1637 if (NeedsHomeObject(value)) { |
1634 EmitSetHomeObject(value, 2, property->GetSlot()); | 1638 EmitSetHomeObject(value, 2, property->GetSlot()); |
1635 } | 1639 } |
1636 | 1640 |
1637 switch (property->kind()) { | 1641 switch (property->kind()) { |
1638 case ObjectLiteral::Property::CONSTANT: | 1642 case ObjectLiteral::Property::CONSTANT: |
1639 case ObjectLiteral::Property::MATERIALIZED_LITERAL: | 1643 case ObjectLiteral::Property::MATERIALIZED_LITERAL: |
1640 case ObjectLiteral::Property::COMPUTED: | 1644 case ObjectLiteral::Property::COMPUTED: |
1641 if (property->emit_store()) { | 1645 if (property->emit_store()) { |
(...skipping 3275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4917 DCHECK(interrupt_address == | 4921 DCHECK(interrupt_address == |
4918 isolate->builtins()->OsrAfterStackCheck()->entry()); | 4922 isolate->builtins()->OsrAfterStackCheck()->entry()); |
4919 return OSR_AFTER_STACK_CHECK; | 4923 return OSR_AFTER_STACK_CHECK; |
4920 } | 4924 } |
4921 | 4925 |
4922 | 4926 |
4923 } // namespace internal | 4927 } // namespace internal |
4924 } // namespace v8 | 4928 } // namespace v8 |
4925 | 4929 |
4926 #endif // V8_TARGET_ARCH_ARM | 4930 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |