| OLD | NEW |
| 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
| 2 // All Rights Reserved. | 2 // All Rights Reserved. |
| 3 // | 3 // |
| 4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
| 5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are |
| 6 // met: | 6 // met: |
| 7 // | 7 // |
| 8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
| 9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
| 10 // | 10 // |
| (...skipping 3252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3263 DCHECK(!trampoline_emitted_); | 3263 DCHECK(!trampoline_emitted_); |
| 3264 DCHECK(unbound_labels_count_ >= 0); | 3264 DCHECK(unbound_labels_count_ >= 0); |
| 3265 if (unbound_labels_count_ > 0) { | 3265 if (unbound_labels_count_ > 0) { |
| 3266 // First we emit jump (2 instructions), then we emit trampoline pool. | 3266 // First we emit jump (2 instructions), then we emit trampoline pool. |
| 3267 { BlockTrampolinePoolScope block_trampoline_pool(this); | 3267 { BlockTrampolinePoolScope block_trampoline_pool(this); |
| 3268 Label after_pool; | 3268 Label after_pool; |
| 3269 if (kArchVariant == kMips64r6) { | 3269 if (kArchVariant == kMips64r6) { |
| 3270 bc(&after_pool); | 3270 bc(&after_pool); |
| 3271 } else { | 3271 } else { |
| 3272 b(&after_pool); | 3272 b(&after_pool); |
| 3273 nop(); | |
| 3274 } | 3273 } |
| 3274 nop(); |
| 3275 | 3275 |
| 3276 EmitForbiddenSlotInstruction(); | |
| 3277 int pool_start = pc_offset(); | 3276 int pool_start = pc_offset(); |
| 3278 for (int i = 0; i < unbound_labels_count_; i++) { | 3277 for (int i = 0; i < unbound_labels_count_; i++) { |
| 3279 { BlockGrowBufferScope block_buf_growth(this); | 3278 { BlockGrowBufferScope block_buf_growth(this); |
| 3280 // Buffer growth (and relocation) must be blocked for internal | 3279 // Buffer growth (and relocation) must be blocked for internal |
| 3281 // references until associated instructions are emitted and available | 3280 // references until associated instructions are emitted and available |
| 3282 // to be patched. | 3281 // to be patched. |
| 3283 RecordRelocInfo(RelocInfo::INTERNAL_REFERENCE_ENCODED); | 3282 RecordRelocInfo(RelocInfo::INTERNAL_REFERENCE_ENCODED); |
| 3284 j(&after_pool); | 3283 j(&after_pool); |
| 3285 } | 3284 } |
| 3286 nop(); | 3285 nop(); |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3384 if (icache_flush_mode != SKIP_ICACHE_FLUSH) { | 3383 if (icache_flush_mode != SKIP_ICACHE_FLUSH) { |
| 3385 Assembler::FlushICache(isolate, pc, 4 * Assembler::kInstrSize); | 3384 Assembler::FlushICache(isolate, pc, 4 * Assembler::kInstrSize); |
| 3386 } | 3385 } |
| 3387 } | 3386 } |
| 3388 | 3387 |
| 3389 | 3388 |
| 3390 } // namespace internal | 3389 } // namespace internal |
| 3391 } // namespace v8 | 3390 } // namespace v8 |
| 3392 | 3391 |
| 3393 #endif // V8_TARGET_ARCH_MIPS64 | 3392 #endif // V8_TARGET_ARCH_MIPS64 |
| OLD | NEW |