OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // | 2 // |
3 // Redistribution and use in source and binary forms, with or without | 3 // Redistribution and use in source and binary forms, with or without |
4 // modification, are permitted provided that the following conditions are | 4 // modification, are permitted provided that the following conditions are |
5 // met: | 5 // met: |
6 // | 6 // |
7 // * Redistributions of source code must retain the above copyright | 7 // * Redistributions of source code must retain the above copyright |
8 // notice, this list of conditions and the following disclaimer. | 8 // notice, this list of conditions and the following disclaimer. |
9 // * Redistributions in binary form must reproduce the above | 9 // * Redistributions in binary form must reproduce the above |
10 // copyright notice, this list of conditions and the following | 10 // copyright notice, this list of conditions and the following |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 match &= !reg3.IsValid() || reg3.IsSameSizeAndType(reg1); | 240 match &= !reg3.IsValid() || reg3.IsSameSizeAndType(reg1); |
241 match &= !reg4.IsValid() || reg4.IsSameSizeAndType(reg1); | 241 match &= !reg4.IsValid() || reg4.IsSameSizeAndType(reg1); |
242 match &= !reg5.IsValid() || reg5.IsSameSizeAndType(reg1); | 242 match &= !reg5.IsValid() || reg5.IsSameSizeAndType(reg1); |
243 match &= !reg6.IsValid() || reg6.IsSameSizeAndType(reg1); | 243 match &= !reg6.IsValid() || reg6.IsSameSizeAndType(reg1); |
244 match &= !reg7.IsValid() || reg7.IsSameSizeAndType(reg1); | 244 match &= !reg7.IsValid() || reg7.IsSameSizeAndType(reg1); |
245 match &= !reg8.IsValid() || reg8.IsSameSizeAndType(reg1); | 245 match &= !reg8.IsValid() || reg8.IsSameSizeAndType(reg1); |
246 return match; | 246 return match; |
247 } | 247 } |
248 | 248 |
249 | 249 |
250 Operand::Operand(const ExternalReference& f) | 250 void Operand::initialize_handle(Handle<Object> handle) { |
251 : immediate_(reinterpret_cast<intptr_t>(f.address())), | |
252 reg_(NoReg), | |
253 rmode_(RelocInfo::EXTERNAL_REFERENCE) {} | |
254 | |
255 | |
256 Operand::Operand(Handle<Object> handle) : reg_(NoReg) { | |
257 AllowDeferredHandleDereference using_raw_address; | 251 AllowDeferredHandleDereference using_raw_address; |
258 | 252 |
259 // Verify all Objects referred by code are NOT in new space. | 253 // Verify all Objects referred by code are NOT in new space. |
260 Object* obj = *handle; | 254 Object* obj = *handle; |
261 if (obj->IsHeapObject()) { | 255 if (obj->IsHeapObject()) { |
262 ASSERT(!HeapObject::cast(obj)->GetHeap()->InNewSpace(obj)); | 256 ASSERT(!HeapObject::cast(obj)->GetHeap()->InNewSpace(obj)); |
263 immediate_ = reinterpret_cast<intptr_t>(handle.location()); | 257 immediate_ = reinterpret_cast<intptr_t>(handle.location()); |
264 rmode_ = RelocInfo::EMBEDDED_OBJECT; | 258 rmode_ = RelocInfo::EMBEDDED_OBJECT; |
265 } else { | 259 } else { |
266 STATIC_ASSERT(sizeof(intptr_t) == sizeof(int64_t)); | 260 STATIC_ASSERT(sizeof(intptr_t) == sizeof(int64_t)); |
(...skipping 2240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2507 // code. | 2501 // code. |
2508 #ifdef ENABLE_DEBUGGER_SUPPORT | 2502 #ifdef ENABLE_DEBUGGER_SUPPORT |
2509 RecordRelocInfo(RelocInfo::CONST_POOL, static_cast<intptr_t>(size)); | 2503 RecordRelocInfo(RelocInfo::CONST_POOL, static_cast<intptr_t>(size)); |
2510 #endif | 2504 #endif |
2511 } | 2505 } |
2512 | 2506 |
2513 | 2507 |
2514 } } // namespace v8::internal | 2508 } } // namespace v8::internal |
2515 | 2509 |
2516 #endif // V8_TARGET_ARCH_A64 | 2510 #endif // V8_TARGET_ARCH_A64 |
OLD | NEW |