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 | 5 // modification, are permitted provided that the following conditions |
6 // are met: | 6 // are 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 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 MemOperand::MemOperand(Register ra, Register rb) { | 213 MemOperand::MemOperand(Register ra, Register rb) { |
214 ra_ = ra; | 214 ra_ = ra; |
215 rb_ = rb; | 215 rb_ = rb; |
216 offset_ = 0; | 216 offset_ = 0; |
217 } | 217 } |
218 | 218 |
219 | 219 |
220 // ----------------------------------------------------------------------------- | 220 // ----------------------------------------------------------------------------- |
221 // Specific instructions, constants, and masks. | 221 // Specific instructions, constants, and masks. |
222 | 222 |
223 | |
224 Assembler::Assembler(Isolate* isolate, void* buffer, int buffer_size) | 223 Assembler::Assembler(Isolate* isolate, void* buffer, int buffer_size) |
225 : AssemblerBase(isolate, buffer, buffer_size), | 224 : AssemblerBase(isolate, buffer, buffer_size), |
226 recorded_ast_id_(TypeFeedbackId::None()), | 225 recorded_ast_id_(TypeFeedbackId::None()), |
227 constant_pool_builder_(kLoadPtrMaxReachBits, kLoadDoubleMaxReachBits), | 226 constant_pool_builder_(kLoadPtrMaxReachBits, kLoadDoubleMaxReachBits) { |
228 positions_recorder_(this) { | |
229 reloc_info_writer.Reposition(buffer_ + buffer_size_, pc_); | 227 reloc_info_writer.Reposition(buffer_ + buffer_size_, pc_); |
230 | 228 |
231 no_trampoline_pool_before_ = 0; | 229 no_trampoline_pool_before_ = 0; |
232 trampoline_pool_blocked_nesting_ = 0; | 230 trampoline_pool_blocked_nesting_ = 0; |
233 constant_pool_entry_sharing_blocked_nesting_ = 0; | 231 constant_pool_entry_sharing_blocked_nesting_ = 0; |
234 next_trampoline_check_ = kMaxInt; | 232 next_trampoline_check_ = kMaxInt; |
235 internal_trampoline_exception_ = false; | 233 internal_trampoline_exception_ = false; |
236 last_bound_pos_ = 0; | 234 last_bound_pos_ = 0; |
237 optimizable_cmpi_pos_ = -1; | 235 optimizable_cmpi_pos_ = -1; |
238 trampoline_emitted_ = FLAG_force_long_branches; | 236 trampoline_emitted_ = FLAG_force_long_branches; |
(...skipping 2219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2458 Memory::Address_at(pc) = buffer_ + pos; | 2456 Memory::Address_at(pc) = buffer_ + pos; |
2459 } else if (RelocInfo::IsInternalReferenceEncoded(rmode)) { | 2457 } else if (RelocInfo::IsInternalReferenceEncoded(rmode)) { |
2460 // mov sequence | 2458 // mov sequence |
2461 intptr_t pos = reinterpret_cast<intptr_t>(target_address_at(pc, code)); | 2459 intptr_t pos = reinterpret_cast<intptr_t>(target_address_at(pc, code)); |
2462 set_target_address_at(isolate(), pc, code, buffer_ + pos, | 2460 set_target_address_at(isolate(), pc, code, buffer_ + pos, |
2463 SKIP_ICACHE_FLUSH); | 2461 SKIP_ICACHE_FLUSH); |
2464 } | 2462 } |
2465 | 2463 |
2466 reloc_info_writer.Write(&rinfo); | 2464 reloc_info_writer.Write(&rinfo); |
2467 } | 2465 } |
2468 | |
2469 reloc_info_writer.Finish(); | |
2470 } | 2466 } |
2471 | 2467 |
2472 | 2468 |
2473 void Assembler::BlockTrampolinePoolFor(int instructions) { | 2469 void Assembler::BlockTrampolinePoolFor(int instructions) { |
2474 BlockTrampolinePoolBefore(pc_offset() + instructions * kInstrSize); | 2470 BlockTrampolinePoolBefore(pc_offset() + instructions * kInstrSize); |
2475 } | 2471 } |
2476 | 2472 |
2477 | 2473 |
2478 void Assembler::CheckTrampolinePool() { | 2474 void Assembler::CheckTrampolinePool() { |
2479 // Some small sequences of instructions must not be broken up by the | 2475 // Some small sequences of instructions must not be broken up by the |
(...skipping 24 matching lines...) Expand all Loading... |
2504 | 2500 |
2505 trampoline_ = Trampoline(pc_offset() - size, tracked_branch_count_); | 2501 trampoline_ = Trampoline(pc_offset() - size, tracked_branch_count_); |
2506 } | 2502 } |
2507 } | 2503 } |
2508 | 2504 |
2509 | 2505 |
2510 } // namespace internal | 2506 } // namespace internal |
2511 } // namespace v8 | 2507 } // namespace v8 |
2512 | 2508 |
2513 #endif // V8_TARGET_ARCH_PPC | 2509 #endif // V8_TARGET_ARCH_PPC |
OLD | NEW |