src/cpu/x86/vm/x86_32.ad

changeset 3310
6729bbc1fcd6
parent 3243
d8cb48376797
child 3317
db2e64ca2d5a
     1.1 --- a/src/cpu/x86/vm/x86_32.ad	Mon Nov 14 18:38:03 2011 -0800
     1.2 +++ b/src/cpu/x86/vm/x86_32.ad	Wed Nov 16 01:39:50 2011 -0800
     1.3 @@ -507,9 +507,12 @@
     1.4  
     1.5  
     1.6  //=============================================================================
     1.7 -const bool Matcher::constant_table_absolute_addressing = true;
     1.8  const RegMask& MachConstantBaseNode::_out_RegMask = RegMask::Empty;
     1.9  
    1.10 +int Compile::ConstantTable::calculate_table_base_offset() const {
    1.11 +  return 0;  // absolute addressing, no offset
    1.12 +}
    1.13 +
    1.14  void MachConstantBaseNode::emit(CodeBuffer& cbuf, PhaseRegAlloc* ra_) const {
    1.15    // Empty encoding
    1.16  }
    1.17 @@ -639,6 +642,12 @@
    1.18    }
    1.19  #endif
    1.20  
    1.21 +  if (C->has_mach_constant_base_node()) {
    1.22 +    // NOTE: We set the table base offset here because users might be
    1.23 +    // emitted before MachConstantBaseNode.
    1.24 +    Compile::ConstantTable& constant_table = C->constant_table();
    1.25 +    constant_table.set_table_base_offset(constant_table.calculate_table_base_offset());
    1.26 +  }
    1.27  }
    1.28  
    1.29  uint MachPrologNode::size(PhaseRegAlloc *ra_) const {

mercurial