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 |