src/share/vm/adlc/output_c.cpp

changeset 4037
da91efe96a93
parent 3317
db2e64ca2d5a
child 4113
0702f188baeb
     1.1 --- a/src/share/vm/adlc/output_c.cpp	Fri Aug 31 16:39:35 2012 -0700
     1.2 +++ b/src/share/vm/adlc/output_c.cpp	Sat Sep 01 13:25:18 2012 -0400
     1.3 @@ -1,5 +1,5 @@
     1.4  /*
     1.5 - * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
     1.6 + * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
     1.7   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     1.8   *
     1.9   * This code is free software; you can redistribute it and/or modify it
    1.10 @@ -1884,7 +1884,6 @@
    1.11    bool          _doing_emit_hi;
    1.12    bool          _doing_emit_lo;
    1.13    bool          _may_reloc;
    1.14 -  bool          _must_reloc;
    1.15    reloc_format  _reloc_form;
    1.16    const char *  _reloc_type;
    1.17    bool          _processing_noninput;
    1.18 @@ -1923,7 +1922,6 @@
    1.19      _doing_emit_hi = false;
    1.20      _doing_emit_lo = false;
    1.21      _may_reloc     = false;
    1.22 -    _must_reloc    = false;
    1.23      _reloc_form    = RELOC_NONE;
    1.24      _reloc_type    = AdlcVMDeps::none_reloc_type();
    1.25      _strings_to_emit.clear();
    1.26 @@ -2195,7 +2193,7 @@
    1.27  
    1.28            _reg_status = LITERAL_ACCESSED;
    1.29            emit_rep_var( rep_var );
    1.30 -          fprintf(_fp,"->disp_is_oop())");
    1.31 +          fprintf(_fp,"->disp_reloc())");
    1.32  
    1.33            // skip trailing $Address
    1.34            _strings_to_emit.iter();
    1.35 @@ -2232,14 +2230,6 @@
    1.36    }
    1.37  
    1.38  
    1.39 -  void gen_emit_x_reloc(const char *d32_lo_hi ) {
    1.40 -    fprintf(_fp,"emit_%s_reloc(cbuf, ", d32_lo_hi );
    1.41 -    emit_replacement();             fprintf(_fp,", ");
    1.42 -    emit_reloc_type( _reloc_type ); fprintf(_fp,", ");
    1.43 -    fprintf(_fp, "%d", _reloc_form);fprintf(_fp, ");");
    1.44 -  }
    1.45 -
    1.46 -
    1.47    void emit() {
    1.48      //
    1.49      //   "emit_d32_reloc(" or "emit_hi_reloc" or "emit_lo_reloc"
    1.50 @@ -2254,10 +2244,6 @@
    1.51          fprintf( _fp, "emit_%s(cbuf, ", d32_hi_lo );
    1.52          emit_replacement(); fprintf(_fp, ")");
    1.53        }
    1.54 -      else if ( _must_reloc ) {
    1.55 -        // Must emit relocation information
    1.56 -        gen_emit_x_reloc( d32_hi_lo );
    1.57 -      }
    1.58        else {
    1.59          // Emit RUNTIME CHECK to see if value needs relocation info
    1.60          // If emitting a relocatable address, use 'emit_d32_reloc'
    1.61 @@ -2266,10 +2252,15 @@
    1.62                  && !(_doing_disp && _doing_constant),
    1.63                  "Must be emitting either a displacement or a constant");
    1.64          fprintf(_fp,"\n");
    1.65 -        fprintf(_fp,"if ( opnd_array(%d)->%s_is_oop() ) {\n",
    1.66 +        fprintf(_fp,"if ( opnd_array(%d)->%s_reloc() != relocInfo::none ) {\n",
    1.67                  _operand_idx, disp_constant);
    1.68          fprintf(_fp,"  ");
    1.69 -        gen_emit_x_reloc( d32_hi_lo ); fprintf(_fp,"\n");
    1.70 +        fprintf(_fp,"emit_%s_reloc(cbuf, ", d32_hi_lo );
    1.71 +        emit_replacement();             fprintf(_fp,", ");
    1.72 +        fprintf(_fp,"opnd_array(%d)->%s_reloc(), ",
    1.73 +                _operand_idx, disp_constant);
    1.74 +        fprintf(_fp, "%d", _reloc_form);fprintf(_fp, ");");
    1.75 +        fprintf(_fp,"\n");
    1.76          fprintf(_fp,"} else {\n");
    1.77          fprintf(_fp,"  emit_%s(cbuf, ", d32_hi_lo);
    1.78          emit_replacement(); fprintf(_fp, ");\n"); fprintf(_fp,"}");

mercurial