| 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 |