| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 "src/v8.h" | 5 #include "src/v8.h" |
| 6 | 6 |
| 7 #if V8_TARGET_ARCH_IA32 | 7 #if V8_TARGET_ARCH_IA32 |
| 8 | 8 |
| 9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
| 10 #include "src/codegen.h" | 10 #include "src/codegen.h" |
| (...skipping 3025 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3036 | 3036 |
| 3037 call(function); | 3037 call(function); |
| 3038 if (base::OS::ActivationFrameAlignment() != 0) { | 3038 if (base::OS::ActivationFrameAlignment() != 0) { |
| 3039 mov(esp, Operand(esp, num_arguments * kPointerSize)); | 3039 mov(esp, Operand(esp, num_arguments * kPointerSize)); |
| 3040 } else { | 3040 } else { |
| 3041 add(esp, Immediate(num_arguments * kPointerSize)); | 3041 add(esp, Immediate(num_arguments * kPointerSize)); |
| 3042 } | 3042 } |
| 3043 } | 3043 } |
| 3044 | 3044 |
| 3045 | 3045 |
| 3046 bool AreAliased(Register r1, Register r2, Register r3, Register r4) { | 3046 #ifdef DEBUG |
| 3047 if (r1.is(r2)) return true; | 3047 bool AreAliased(Register reg1, |
| 3048 if (r1.is(r3)) return true; | 3048 Register reg2, |
| 3049 if (r1.is(r4)) return true; | 3049 Register reg3, |
| 3050 if (r2.is(r3)) return true; | 3050 Register reg4, |
| 3051 if (r2.is(r4)) return true; | 3051 Register reg5, |
| 3052 if (r3.is(r4)) return true; | 3052 Register reg6, |
| 3053 return false; | 3053 Register reg7, |
| 3054 Register reg8) { |
| 3055 int n_of_valid_regs = reg1.is_valid() + reg2.is_valid() + |
| 3056 reg3.is_valid() + reg4.is_valid() + reg5.is_valid() + reg6.is_valid() + |
| 3057 reg7.is_valid() + reg8.is_valid(); |
| 3058 |
| 3059 RegList regs = 0; |
| 3060 if (reg1.is_valid()) regs |= reg1.bit(); |
| 3061 if (reg2.is_valid()) regs |= reg2.bit(); |
| 3062 if (reg3.is_valid()) regs |= reg3.bit(); |
| 3063 if (reg4.is_valid()) regs |= reg4.bit(); |
| 3064 if (reg5.is_valid()) regs |= reg5.bit(); |
| 3065 if (reg6.is_valid()) regs |= reg6.bit(); |
| 3066 if (reg7.is_valid()) regs |= reg7.bit(); |
| 3067 if (reg8.is_valid()) regs |= reg8.bit(); |
| 3068 int n_of_non_aliasing_regs = NumRegs(regs); |
| 3069 |
| 3070 return n_of_valid_regs != n_of_non_aliasing_regs; |
| 3054 } | 3071 } |
| 3072 #endif |
| 3055 | 3073 |
| 3056 | 3074 |
| 3057 CodePatcher::CodePatcher(byte* address, int size) | 3075 CodePatcher::CodePatcher(byte* address, int size) |
| 3058 : address_(address), | 3076 : address_(address), |
| 3059 size_(size), | 3077 size_(size), |
| 3060 masm_(NULL, address, size + Assembler::kGap) { | 3078 masm_(NULL, address, size + Assembler::kGap) { |
| 3061 // Create a new macro assembler pointing to the address of the code to patch. | 3079 // Create a new macro assembler pointing to the address of the code to patch. |
| 3062 // The size is adjusted with kGap on order for the assembler to generate size | 3080 // The size is adjusted with kGap on order for the assembler to generate size |
| 3063 // bytes of instructions without failing with buffer size constraints. | 3081 // bytes of instructions without failing with buffer size constraints. |
| 3064 ASSERT(masm_.reloc_info_writer.pos() == address_ + size_ + Assembler::kGap); | 3082 ASSERT(masm_.reloc_info_writer.pos() == address_ + size_ + Assembler::kGap); |
| (...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3409 if (ms.shift() > 0) sar(edx, ms.shift()); | 3427 if (ms.shift() > 0) sar(edx, ms.shift()); |
| 3410 mov(eax, dividend); | 3428 mov(eax, dividend); |
| 3411 shr(eax, 31); | 3429 shr(eax, 31); |
| 3412 add(edx, eax); | 3430 add(edx, eax); |
| 3413 } | 3431 } |
| 3414 | 3432 |
| 3415 | 3433 |
| 3416 } } // namespace v8::internal | 3434 } } // namespace v8::internal |
| 3417 | 3435 |
| 3418 #endif // V8_TARGET_ARCH_IA32 | 3436 #endif // V8_TARGET_ARCH_IA32 |
| OLD | NEW |