OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 2797 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2808 ASSERT(result.is(rax)); | 2808 ASSERT(result.is(rax)); |
2809 __ load_rax(ToExternalReference(LConstantOperand::cast(instr->object()))); | 2809 __ load_rax(ToExternalReference(LConstantOperand::cast(instr->object()))); |
2810 } else { | 2810 } else { |
2811 Register object = ToRegister(instr->object()); | 2811 Register object = ToRegister(instr->object()); |
2812 __ Load(result, MemOperand(object, offset), access.representation()); | 2812 __ Load(result, MemOperand(object, offset), access.representation()); |
2813 } | 2813 } |
2814 return; | 2814 return; |
2815 } | 2815 } |
2816 | 2816 |
2817 Register object = ToRegister(instr->object()); | 2817 Register object = ToRegister(instr->object()); |
2818 if (FLAG_track_double_fields && | 2818 if (instr->hydrogen()->representation().IsDouble()) { |
2819 instr->hydrogen()->representation().IsDouble()) { | |
2820 XMMRegister result = ToDoubleRegister(instr->result()); | 2819 XMMRegister result = ToDoubleRegister(instr->result()); |
2821 __ movsd(result, FieldOperand(object, offset)); | 2820 __ movsd(result, FieldOperand(object, offset)); |
2822 return; | 2821 return; |
2823 } | 2822 } |
2824 | 2823 |
2825 Register result = ToRegister(instr->result()); | 2824 Register result = ToRegister(instr->result()); |
2826 if (!access.IsInobject()) { | 2825 if (!access.IsInobject()) { |
2827 __ movp(result, FieldOperand(object, JSObject::kPropertiesOffset)); | 2826 __ movp(result, FieldOperand(object, JSObject::kPropertiesOffset)); |
2828 object = result; | 2827 object = result; |
2829 } | 2828 } |
(...skipping 1130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3960 if (IsInteger32Constant(operand_value)) { | 3959 if (IsInteger32Constant(operand_value)) { |
3961 DeoptimizeIf(no_condition, instr->environment()); | 3960 DeoptimizeIf(no_condition, instr->environment()); |
3962 } | 3961 } |
3963 } else { | 3962 } else { |
3964 if (!hinstr->value()->type().IsHeapObject()) { | 3963 if (!hinstr->value()->type().IsHeapObject()) { |
3965 Register value = ToRegister(instr->value()); | 3964 Register value = ToRegister(instr->value()); |
3966 Condition cc = masm()->CheckSmi(value); | 3965 Condition cc = masm()->CheckSmi(value); |
3967 DeoptimizeIf(cc, instr->environment()); | 3966 DeoptimizeIf(cc, instr->environment()); |
3968 } | 3967 } |
3969 } | 3968 } |
3970 } else if (FLAG_track_double_fields && representation.IsDouble()) { | 3969 } else if (representation.IsDouble()) { |
3971 ASSERT(transition.is_null()); | 3970 ASSERT(transition.is_null()); |
3972 ASSERT(access.IsInobject()); | 3971 ASSERT(access.IsInobject()); |
3973 ASSERT(!hinstr->NeedsWriteBarrier()); | 3972 ASSERT(!hinstr->NeedsWriteBarrier()); |
3974 XMMRegister value = ToDoubleRegister(instr->value()); | 3973 XMMRegister value = ToDoubleRegister(instr->value()); |
3975 __ movsd(FieldOperand(object, offset), value); | 3974 __ movsd(FieldOperand(object, offset), value); |
3976 return; | 3975 return; |
3977 } | 3976 } |
3978 | 3977 |
3979 if (!transition.is_null()) { | 3978 if (!transition.is_null()) { |
3980 if (!hinstr->NeedsWriteBarrierForMap()) { | 3979 if (!hinstr->NeedsWriteBarrierForMap()) { |
(...skipping 1642 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5623 FixedArray::kHeaderSize - kPointerSize)); | 5622 FixedArray::kHeaderSize - kPointerSize)); |
5624 __ bind(&done); | 5623 __ bind(&done); |
5625 } | 5624 } |
5626 | 5625 |
5627 | 5626 |
5628 #undef __ | 5627 #undef __ |
5629 | 5628 |
5630 } } // namespace v8::internal | 5629 } } // namespace v8::internal |
5631 | 5630 |
5632 #endif // V8_TARGET_ARCH_X64 | 5631 #endif // V8_TARGET_ARCH_X64 |
OLD | NEW |