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/base/bits.h" | 7 #include "src/base/bits.h" |
8 #include "src/bootstrapper.h" | 8 #include "src/bootstrapper.h" |
9 #include "src/code-stubs.h" | 9 #include "src/code-stubs.h" |
10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
(...skipping 4139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4150 void RecordWriteStub::GenerateIncremental(MacroAssembler* masm, Mode mode) { | 4150 void RecordWriteStub::GenerateIncremental(MacroAssembler* masm, Mode mode) { |
4151 regs_.Save(masm); | 4151 regs_.Save(masm); |
4152 | 4152 |
4153 if (remembered_set_action() == EMIT_REMEMBERED_SET) { | 4153 if (remembered_set_action() == EMIT_REMEMBERED_SET) { |
4154 Label dont_need_remembered_set; | 4154 Label dont_need_remembered_set; |
4155 | 4155 |
4156 __ LoadP(regs_.scratch0(), MemOperand(regs_.address(), 0)); | 4156 __ LoadP(regs_.scratch0(), MemOperand(regs_.address(), 0)); |
4157 __ JumpIfNotInNewSpace(regs_.scratch0(), // Value. | 4157 __ JumpIfNotInNewSpace(regs_.scratch0(), // Value. |
4158 regs_.scratch0(), &dont_need_remembered_set); | 4158 regs_.scratch0(), &dont_need_remembered_set); |
4159 | 4159 |
4160 __ CheckPageFlag(regs_.object(), regs_.scratch0(), | 4160 __ JumpIfInNewSpace(regs_.object(), regs_.scratch0(), |
4161 1 << MemoryChunk::SCAN_ON_SCAVENGE, ne, | 4161 &dont_need_remembered_set); |
4162 &dont_need_remembered_set); | |
4163 | 4162 |
4164 // First notify the incremental marker if necessary, then update the | 4163 // First notify the incremental marker if necessary, then update the |
4165 // remembered set. | 4164 // remembered set. |
4166 CheckNeedsToInformIncrementalMarker( | 4165 CheckNeedsToInformIncrementalMarker( |
4167 masm, kUpdateRememberedSetOnNoNeedToInformIncrementalMarker, mode); | 4166 masm, kUpdateRememberedSetOnNoNeedToInformIncrementalMarker, mode); |
4168 InformIncrementalMarker(masm); | 4167 InformIncrementalMarker(masm); |
4169 regs_.Restore(masm); | 4168 regs_.Restore(masm); |
4170 __ RememberedSetHelper(object(), address(), value(), save_fp_regs_mode(), | 4169 __ RememberedSetHelper(object(), address(), value(), save_fp_regs_mode(), |
4171 MacroAssembler::kReturnAtEnd); | 4170 MacroAssembler::kReturnAtEnd); |
4172 | 4171 |
(...skipping 1505 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5678 CallApiFunctionAndReturn(masm, api_function_address, thunk_ref, | 5677 CallApiFunctionAndReturn(masm, api_function_address, thunk_ref, |
5679 kStackUnwindSpace, NULL, return_value_operand, NULL); | 5678 kStackUnwindSpace, NULL, return_value_operand, NULL); |
5680 } | 5679 } |
5681 | 5680 |
5682 | 5681 |
5683 #undef __ | 5682 #undef __ |
5684 } // namespace internal | 5683 } // namespace internal |
5685 } // namespace v8 | 5684 } // namespace v8 |
5686 | 5685 |
5687 #endif // V8_TARGET_ARCH_PPC | 5686 #endif // V8_TARGET_ARCH_PPC |
OLD | NEW |