| OLD | NEW | 
|---|
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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_ARM64 | 5 #if V8_TARGET_ARCH_ARM64 | 
| 6 | 6 | 
| 7 #include "src/code-stubs.h" | 7 #include "src/code-stubs.h" | 
| 8 #include "src/api-arguments.h" | 8 #include "src/api-arguments.h" | 
| 9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" | 
| 10 #include "src/codegen.h" | 10 #include "src/codegen.h" | 
| (...skipping 3137 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3148 | 3148 | 
| 3149 | 3149 | 
| 3150 void RecordWriteStub::CheckNeedsToInformIncrementalMarker( | 3150 void RecordWriteStub::CheckNeedsToInformIncrementalMarker( | 
| 3151     MacroAssembler* masm, | 3151     MacroAssembler* masm, | 
| 3152     OnNoNeedToInformIncrementalMarker on_no_need, | 3152     OnNoNeedToInformIncrementalMarker on_no_need, | 
| 3153     Mode mode) { | 3153     Mode mode) { | 
| 3154   Label on_black; | 3154   Label on_black; | 
| 3155   Label need_incremental; | 3155   Label need_incremental; | 
| 3156   Label need_incremental_pop_scratch; | 3156   Label need_incremental_pop_scratch; | 
| 3157 | 3157 | 
| 3158   Register mem_chunk = regs_.scratch0(); |  | 
| 3159   Register counter = regs_.scratch1(); |  | 
| 3160   __ Bic(mem_chunk, regs_.object(), Page::kPageAlignmentMask); |  | 
| 3161   __ Ldr(counter, |  | 
| 3162          MemOperand(mem_chunk, MemoryChunk::kWriteBarrierCounterOffset)); |  | 
| 3163   __ Subs(counter, counter, 1); |  | 
| 3164   __ Str(counter, |  | 
| 3165          MemOperand(mem_chunk, MemoryChunk::kWriteBarrierCounterOffset)); |  | 
| 3166   __ B(mi, &need_incremental); |  | 
| 3167 |  | 
| 3168   // If the object is not black we don't have to inform the incremental marker. | 3158   // If the object is not black we don't have to inform the incremental marker. | 
| 3169   __ JumpIfBlack(regs_.object(), regs_.scratch0(), regs_.scratch1(), &on_black); | 3159   __ JumpIfBlack(regs_.object(), regs_.scratch0(), regs_.scratch1(), &on_black); | 
| 3170 | 3160 | 
| 3171   regs_.Restore(masm);  // Restore the extra scratch registers we used. | 3161   regs_.Restore(masm);  // Restore the extra scratch registers we used. | 
| 3172   if (on_no_need == kUpdateRememberedSetOnNoNeedToInformIncrementalMarker) { | 3162   if (on_no_need == kUpdateRememberedSetOnNoNeedToInformIncrementalMarker) { | 
| 3173     __ RememberedSetHelper(object(), address(), | 3163     __ RememberedSetHelper(object(), address(), | 
| 3174                            value(),  // scratch1 | 3164                            value(),  // scratch1 | 
| 3175                            save_fp_regs_mode(), MacroAssembler::kReturnAtEnd); | 3165                            save_fp_regs_mode(), MacroAssembler::kReturnAtEnd); | 
| 3176   } else { | 3166   } else { | 
| 3177     __ Ret(); | 3167     __ Ret(); | 
| (...skipping 2357 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 5535                            kStackUnwindSpace, NULL, spill_offset, | 5525                            kStackUnwindSpace, NULL, spill_offset, | 
| 5536                            return_value_operand, NULL); | 5526                            return_value_operand, NULL); | 
| 5537 } | 5527 } | 
| 5538 | 5528 | 
| 5539 #undef __ | 5529 #undef __ | 
| 5540 | 5530 | 
| 5541 }  // namespace internal | 5531 }  // namespace internal | 
| 5542 }  // namespace v8 | 5532 }  // namespace v8 | 
| 5543 | 5533 | 
| 5544 #endif  // V8_TARGET_ARCH_ARM64 | 5534 #endif  // V8_TARGET_ARCH_ARM64 | 
| OLD | NEW | 
|---|