| 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 #include <assert.h>  // For assert | 5 #include <assert.h>  // For assert | 
| 6 #include <limits.h>  // For LONG_MIN, LONG_MAX. | 6 #include <limits.h>  // For LONG_MIN, LONG_MAX. | 
| 7 | 7 | 
| 8 #if V8_TARGET_ARCH_PPC | 8 #if V8_TARGET_ARCH_PPC | 
| 9 | 9 | 
| 10 #include "src/base/bits.h" | 10 #include "src/base/bits.h" | 
| (...skipping 3156 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3167     bne(condition_met, cr0); | 3167     bne(condition_met, cr0); | 
| 3168   } | 3168   } | 
| 3169   if (cc == eq) { | 3169   if (cc == eq) { | 
| 3170     beq(condition_met, cr0); | 3170     beq(condition_met, cr0); | 
| 3171   } | 3171   } | 
| 3172 } | 3172 } | 
| 3173 | 3173 | 
| 3174 | 3174 | 
| 3175 void MacroAssembler::JumpIfBlack(Register object, Register scratch0, | 3175 void MacroAssembler::JumpIfBlack(Register object, Register scratch0, | 
| 3176                                  Register scratch1, Label* on_black) { | 3176                                  Register scratch1, Label* on_black) { | 
| 3177   HasColor(object, scratch0, scratch1, on_black, 1, 0);  // kBlackBitPattern. | 3177   HasColor(object, scratch0, scratch1, on_black, 1, 1);  // kBlackBitPattern. | 
| 3178   DCHECK(strcmp(Marking::kBlackBitPattern, "10") == 0); | 3178   DCHECK(strcmp(Marking::kBlackBitPattern, "11") == 0); | 
| 3179 } | 3179 } | 
| 3180 | 3180 | 
| 3181 | 3181 | 
| 3182 void MacroAssembler::HasColor(Register object, Register bitmap_scratch, | 3182 void MacroAssembler::HasColor(Register object, Register bitmap_scratch, | 
| 3183                               Register mask_scratch, Label* has_color, | 3183                               Register mask_scratch, Label* has_color, | 
| 3184                               int first_bit, int second_bit) { | 3184                               int first_bit, int second_bit) { | 
| 3185   DCHECK(!AreAliased(object, bitmap_scratch, mask_scratch, no_reg)); | 3185   DCHECK(!AreAliased(object, bitmap_scratch, mask_scratch, no_reg)); | 
| 3186 | 3186 | 
| 3187   GetMarkBits(object, bitmap_scratch, mask_scratch); | 3187   GetMarkBits(object, bitmap_scratch, mask_scratch); | 
| 3188 | 3188 | 
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3225 | 3225 | 
| 3226 | 3226 | 
| 3227 void MacroAssembler::JumpIfWhite(Register value, Register bitmap_scratch, | 3227 void MacroAssembler::JumpIfWhite(Register value, Register bitmap_scratch, | 
| 3228                                  Register mask_scratch, Register load_scratch, | 3228                                  Register mask_scratch, Register load_scratch, | 
| 3229                                  Label* value_is_white) { | 3229                                  Label* value_is_white) { | 
| 3230   DCHECK(!AreAliased(value, bitmap_scratch, mask_scratch, ip)); | 3230   DCHECK(!AreAliased(value, bitmap_scratch, mask_scratch, ip)); | 
| 3231   GetMarkBits(value, bitmap_scratch, mask_scratch); | 3231   GetMarkBits(value, bitmap_scratch, mask_scratch); | 
| 3232 | 3232 | 
| 3233   // If the value is black or grey we don't need to do anything. | 3233   // If the value is black or grey we don't need to do anything. | 
| 3234   DCHECK(strcmp(Marking::kWhiteBitPattern, "00") == 0); | 3234   DCHECK(strcmp(Marking::kWhiteBitPattern, "00") == 0); | 
| 3235   DCHECK(strcmp(Marking::kBlackBitPattern, "10") == 0); | 3235   DCHECK(strcmp(Marking::kBlackBitPattern, "11") == 0); | 
| 3236   DCHECK(strcmp(Marking::kGreyBitPattern, "11") == 0); | 3236   DCHECK(strcmp(Marking::kGreyBitPattern, "10") == 0); | 
| 3237   DCHECK(strcmp(Marking::kImpossibleBitPattern, "01") == 0); | 3237   DCHECK(strcmp(Marking::kImpossibleBitPattern, "01") == 0); | 
| 3238 | 3238 | 
| 3239   // Since both black and grey have a 1 in the first position and white does | 3239   // Since both black and grey have a 1 in the first position and white does | 
| 3240   // not have a 1 there we only need to check one bit. | 3240   // not have a 1 there we only need to check one bit. | 
| 3241   lwz(load_scratch, MemOperand(bitmap_scratch, MemoryChunk::kHeaderSize)); | 3241   lwz(load_scratch, MemOperand(bitmap_scratch, MemoryChunk::kHeaderSize)); | 
| 3242   and_(r0, mask_scratch, load_scratch, SetRC); | 3242   and_(r0, mask_scratch, load_scratch, SetRC); | 
| 3243   beq(value_is_white, cr0); | 3243   beq(value_is_white, cr0); | 
| 3244 } | 3244 } | 
| 3245 | 3245 | 
| 3246 | 3246 | 
| (...skipping 1051 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4298   } | 4298   } | 
| 4299   if (mag.shift > 0) srawi(result, result, mag.shift); | 4299   if (mag.shift > 0) srawi(result, result, mag.shift); | 
| 4300   ExtractBit(r0, dividend, 31); | 4300   ExtractBit(r0, dividend, 31); | 
| 4301   add(result, result, r0); | 4301   add(result, result, r0); | 
| 4302 } | 4302 } | 
| 4303 | 4303 | 
| 4304 }  // namespace internal | 4304 }  // namespace internal | 
| 4305 }  // namespace v8 | 4305 }  // namespace v8 | 
| 4306 | 4306 | 
| 4307 #endif  // V8_TARGET_ARCH_PPC | 4307 #endif  // V8_TARGET_ARCH_PPC | 
| OLD | NEW | 
|---|