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,"}");