383 OopAddress(address target) : AddressLiteral(target, relocInfo::oop_type){} |
383 OopAddress(address target) : AddressLiteral(target, relocInfo::oop_type){} |
384 |
384 |
385 }; |
385 }; |
386 |
386 |
387 class ExternalAddress: public AddressLiteral { |
387 class ExternalAddress: public AddressLiteral { |
388 |
388 private: |
389 public: |
389 static relocInfo::relocType reloc_for_target(address target) { |
390 |
390 // Sometimes ExternalAddress is used for values which aren't |
391 ExternalAddress(address target) : AddressLiteral(target, relocInfo::external_word_type){} |
391 // exactly addresses, like the card table base. |
|
392 // external_word_type can't be used for values in the first page |
|
393 // so just skip the reloc in that case. |
|
394 return external_word_Relocation::can_be_relocated(target) ? relocInfo::external_word_type : relocInfo::none; |
|
395 } |
|
396 |
|
397 public: |
|
398 |
|
399 ExternalAddress(address target) : AddressLiteral(target, reloc_for_target(target)) {} |
392 |
400 |
393 }; |
401 }; |
394 |
402 |
395 class InternalAddress: public AddressLiteral { |
403 class InternalAddress: public AddressLiteral { |
396 |
404 |