| 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 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 return Assembler::target_address_at(pc_, host_); | 244 return Assembler::target_address_at(pc_, host_); |
| 245 } | 245 } |
| 246 | 246 |
| 247 uint32_t RelocInfo::wasm_function_table_size_reference() { | 247 uint32_t RelocInfo::wasm_function_table_size_reference() { |
| 248 DCHECK(IsWasmFunctionTableSizeReference(rmode_)); | 248 DCHECK(IsWasmFunctionTableSizeReference(rmode_)); |
| 249 return static_cast<uint32_t>( | 249 return static_cast<uint32_t>( |
| 250 reinterpret_cast<intptr_t>(Assembler::target_address_at(pc_, host_))); | 250 reinterpret_cast<intptr_t>(Assembler::target_address_at(pc_, host_))); |
| 251 } | 251 } |
| 252 | 252 |
| 253 void RelocInfo::unchecked_update_wasm_memory_reference( | 253 void RelocInfo::unchecked_update_wasm_memory_reference( |
| 254 Address address, ICacheFlushMode flush_mode) { | 254 Isolate* isolate, Address address, ICacheFlushMode flush_mode) { |
| 255 Assembler::set_target_address_at(isolate_, pc_, host_, address, flush_mode); | 255 Assembler::set_target_address_at(isolate, pc_, host_, address, flush_mode); |
| 256 } | 256 } |
| 257 | 257 |
| 258 void RelocInfo::unchecked_update_wasm_size(uint32_t size, | 258 void RelocInfo::unchecked_update_wasm_size(Isolate* isolate, uint32_t size, |
| 259 ICacheFlushMode flush_mode) { | 259 ICacheFlushMode flush_mode) { |
| 260 Assembler::set_target_address_at(isolate_, pc_, host_, | 260 Assembler::set_target_address_at(isolate, pc_, host_, |
| 261 reinterpret_cast<Address>(size), flush_mode); | 261 reinterpret_cast<Address>(size), flush_mode); |
| 262 } | 262 } |
| 263 | 263 |
| 264 // ----------------------------------------------------------------------------- | 264 // ----------------------------------------------------------------------------- |
| 265 // Implementation of Operand and MemOperand | 265 // Implementation of Operand and MemOperand |
| 266 // See assembler-s390-inl.h for inlined constructors | 266 // See assembler-s390-inl.h for inlined constructors |
| 267 | 267 |
| 268 Operand::Operand(Handle<Object> handle) { | 268 Operand::Operand(Handle<Object> handle) { |
| 269 AllowDeferredHandleDereference using_raw_address; | 269 AllowDeferredHandleDereference using_raw_address; |
| 270 rm_ = no_reg; | 270 rm_ = no_reg; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 288 | 288 |
| 289 MemOperand::MemOperand(Register rx, Register rb, int32_t offset) { | 289 MemOperand::MemOperand(Register rx, Register rb, int32_t offset) { |
| 290 baseRegister = rb; | 290 baseRegister = rb; |
| 291 indexRegister = rx; | 291 indexRegister = rx; |
| 292 offset_ = offset; | 292 offset_ = offset; |
| 293 } | 293 } |
| 294 | 294 |
| 295 // ----------------------------------------------------------------------------- | 295 // ----------------------------------------------------------------------------- |
| 296 // Specific instructions, constants, and masks. | 296 // Specific instructions, constants, and masks. |
| 297 | 297 |
| 298 Assembler::Assembler(Isolate* isolate, void* buffer, int buffer_size) | 298 Assembler::Assembler(IsolateData isolate_data, void* buffer, int buffer_size) |
| 299 : AssemblerBase(isolate, buffer, buffer_size), | 299 : AssemblerBase(isolate_data, buffer, buffer_size), |
| 300 recorded_ast_id_(TypeFeedbackId::None()), | 300 recorded_ast_id_(TypeFeedbackId::None()), |
| 301 code_targets_(100) { | 301 code_targets_(100) { |
| 302 reloc_info_writer.Reposition(buffer_ + buffer_size_, pc_); | 302 reloc_info_writer.Reposition(buffer_ + buffer_size_, pc_); |
| 303 | 303 |
| 304 last_bound_pos_ = 0; | 304 last_bound_pos_ = 0; |
| 305 ClearRecordedAstId(); | 305 ClearRecordedAstId(); |
| 306 relocations_.reserve(128); | 306 relocations_.reserve(128); |
| 307 } | 307 } |
| 308 | 308 |
| 309 void Assembler::GetCode(CodeDesc* desc) { | 309 void Assembler::GetCode(CodeDesc* desc) { |
| (...skipping 1830 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2140 } | 2140 } |
| 2141 | 2141 |
| 2142 void Assembler::EmitRelocations() { | 2142 void Assembler::EmitRelocations() { |
| 2143 EnsureSpaceFor(relocations_.size() * kMaxRelocSize); | 2143 EnsureSpaceFor(relocations_.size() * kMaxRelocSize); |
| 2144 | 2144 |
| 2145 for (std::vector<DeferredRelocInfo>::iterator it = relocations_.begin(); | 2145 for (std::vector<DeferredRelocInfo>::iterator it = relocations_.begin(); |
| 2146 it != relocations_.end(); it++) { | 2146 it != relocations_.end(); it++) { |
| 2147 RelocInfo::Mode rmode = it->rmode(); | 2147 RelocInfo::Mode rmode = it->rmode(); |
| 2148 Address pc = buffer_ + it->position(); | 2148 Address pc = buffer_ + it->position(); |
| 2149 Code* code = NULL; | 2149 Code* code = NULL; |
| 2150 RelocInfo rinfo(isolate(), pc, rmode, it->data(), code); | 2150 RelocInfo rinfo(pc, rmode, it->data(), code); |
| 2151 | 2151 |
| 2152 // Fix up internal references now that they are guaranteed to be bound. | 2152 // Fix up internal references now that they are guaranteed to be bound. |
| 2153 if (RelocInfo::IsInternalReference(rmode)) { | 2153 if (RelocInfo::IsInternalReference(rmode)) { |
| 2154 // Jump table entry | 2154 // Jump table entry |
| 2155 intptr_t pos = reinterpret_cast<intptr_t>(Memory::Address_at(pc)); | 2155 intptr_t pos = reinterpret_cast<intptr_t>(Memory::Address_at(pc)); |
| 2156 Memory::Address_at(pc) = buffer_ + pos; | 2156 Memory::Address_at(pc) = buffer_ + pos; |
| 2157 } else if (RelocInfo::IsInternalReferenceEncoded(rmode)) { | 2157 } else if (RelocInfo::IsInternalReferenceEncoded(rmode)) { |
| 2158 // mov sequence | 2158 // mov sequence |
| 2159 intptr_t pos = reinterpret_cast<intptr_t>(target_address_at(pc, code)); | 2159 intptr_t pos = reinterpret_cast<intptr_t>(target_address_at(pc, code)); |
| 2160 set_target_address_at(isolate(), pc, code, buffer_ + pos, | 2160 set_target_address_at(nullptr, pc, code, buffer_ + pos, |
| 2161 SKIP_ICACHE_FLUSH); | 2161 SKIP_ICACHE_FLUSH); |
| 2162 } | 2162 } |
| 2163 | 2163 |
| 2164 reloc_info_writer.Write(&rinfo); | 2164 reloc_info_writer.Write(&rinfo); |
| 2165 } | 2165 } |
| 2166 } | 2166 } |
| 2167 | 2167 |
| 2168 } // namespace internal | 2168 } // namespace internal |
| 2169 } // namespace v8 | 2169 } // namespace v8 |
| 2170 #endif // V8_TARGET_ARCH_S390 | 2170 #endif // V8_TARGET_ARCH_S390 |
| OLD | NEW |