OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 1638 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1649 VisitForAccumulatorValue(prop->obj()); | 1649 VisitForAccumulatorValue(prop->obj()); |
1650 __ mov(r1, r0); | 1650 __ mov(r1, r0); |
1651 __ pop(r0); // Restore value. | 1651 __ pop(r0); // Restore value. |
1652 __ mov(r2, Operand(prop->key()->AsLiteral()->handle())); | 1652 __ mov(r2, Operand(prop->key()->AsLiteral()->handle())); |
1653 Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Initialize)); | 1653 Handle<Code> ic(Builtins::builtin(Builtins::StoreIC_Initialize)); |
1654 EmitCallIC(ic, RelocInfo::CODE_TARGET); | 1654 EmitCallIC(ic, RelocInfo::CODE_TARGET); |
1655 break; | 1655 break; |
1656 } | 1656 } |
1657 case KEYED_PROPERTY: { | 1657 case KEYED_PROPERTY: { |
1658 __ push(r0); // Preserve value. | 1658 __ push(r0); // Preserve value. |
1659 VisitForStackValue(prop->obj()); | 1659 if (prop->is_synthetic()) { |
1660 VisitForAccumulatorValue(prop->key()); | 1660 ASSERT(prop->obj()->AsVariableProxy() != NULL); |
1661 __ mov(r1, r0); | 1661 ASSERT(prop->key()->AsLiteral() != NULL); |
1662 __ pop(r2); | 1662 { AccumulatorValueContext for_object(this); |
| 1663 EmitVariableLoad(prop->obj()->AsVariableProxy()->var()); |
| 1664 } |
| 1665 __ mov(r2, r0); |
| 1666 __ mov(r1, Operand(prop->key()->AsLiteral()->handle())); |
| 1667 } else { |
| 1668 VisitForStackValue(prop->obj()); |
| 1669 VisitForAccumulatorValue(prop->key()); |
| 1670 __ mov(r1, r0); |
| 1671 __ pop(r2); |
| 1672 } |
1663 __ pop(r0); // Restore value. | 1673 __ pop(r0); // Restore value. |
1664 Handle<Code> ic(Builtins::builtin(Builtins::KeyedStoreIC_Initialize)); | 1674 Handle<Code> ic(Builtins::builtin(Builtins::KeyedStoreIC_Initialize)); |
1665 EmitCallIC(ic, RelocInfo::CODE_TARGET); | 1675 EmitCallIC(ic, RelocInfo::CODE_TARGET); |
1666 break; | 1676 break; |
1667 } | 1677 } |
1668 } | 1678 } |
1669 PrepareForBailoutForId(bailout_ast_id, TOS_REG); | 1679 PrepareForBailoutForId(bailout_ast_id, TOS_REG); |
1670 context()->Plug(r0); | 1680 context()->Plug(r0); |
1671 } | 1681 } |
1672 | 1682 |
(...skipping 2022 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3695 __ mov(r1, Operand(r1, ASR, 1)); // Un-smi-tag value. | 3705 __ mov(r1, Operand(r1, ASR, 1)); // Un-smi-tag value. |
3696 __ add(pc, r1, Operand(masm_->CodeObject())); | 3706 __ add(pc, r1, Operand(masm_->CodeObject())); |
3697 } | 3707 } |
3698 | 3708 |
3699 | 3709 |
3700 #undef __ | 3710 #undef __ |
3701 | 3711 |
3702 } } // namespace v8::internal | 3712 } } // namespace v8::internal |
3703 | 3713 |
3704 #endif // V8_TARGET_ARCH_ARM | 3714 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |