Mercurial > hg > truffle
diff src/share/vm/adlc/output_c.cpp @ 6725:da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes
Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland
Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author | coleenp |
---|---|
date | Sat, 01 Sep 2012 13:25:18 -0400 |
parents | db2e64ca2d5a |
children | 0702f188baeb |
line wrap: on
line diff
--- a/src/share/vm/adlc/output_c.cpp Fri Aug 31 16:39:35 2012 -0700 +++ b/src/share/vm/adlc/output_c.cpp Sat Sep 01 13:25:18 2012 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1884,7 +1884,6 @@ bool _doing_emit_hi; bool _doing_emit_lo; bool _may_reloc; - bool _must_reloc; reloc_format _reloc_form; const char * _reloc_type; bool _processing_noninput; @@ -1923,7 +1922,6 @@ _doing_emit_hi = false; _doing_emit_lo = false; _may_reloc = false; - _must_reloc = false; _reloc_form = RELOC_NONE; _reloc_type = AdlcVMDeps::none_reloc_type(); _strings_to_emit.clear(); @@ -2195,7 +2193,7 @@ _reg_status = LITERAL_ACCESSED; emit_rep_var( rep_var ); - fprintf(_fp,"->disp_is_oop())"); + fprintf(_fp,"->disp_reloc())"); // skip trailing $Address _strings_to_emit.iter(); @@ -2232,14 +2230,6 @@ } - void gen_emit_x_reloc(const char *d32_lo_hi ) { - fprintf(_fp,"emit_%s_reloc(cbuf, ", d32_lo_hi ); - emit_replacement(); fprintf(_fp,", "); - emit_reloc_type( _reloc_type ); fprintf(_fp,", "); - fprintf(_fp, "%d", _reloc_form);fprintf(_fp, ");"); - } - - void emit() { // // "emit_d32_reloc(" or "emit_hi_reloc" or "emit_lo_reloc" @@ -2254,10 +2244,6 @@ fprintf( _fp, "emit_%s(cbuf, ", d32_hi_lo ); emit_replacement(); fprintf(_fp, ")"); } - else if ( _must_reloc ) { - // Must emit relocation information - gen_emit_x_reloc( d32_hi_lo ); - } else { // Emit RUNTIME CHECK to see if value needs relocation info // If emitting a relocatable address, use 'emit_d32_reloc' @@ -2266,10 +2252,15 @@ && !(_doing_disp && _doing_constant), "Must be emitting either a displacement or a constant"); fprintf(_fp,"\n"); - fprintf(_fp,"if ( opnd_array(%d)->%s_is_oop() ) {\n", + fprintf(_fp,"if ( opnd_array(%d)->%s_reloc() != relocInfo::none ) {\n", _operand_idx, disp_constant); fprintf(_fp," "); - gen_emit_x_reloc( d32_hi_lo ); fprintf(_fp,"\n"); + fprintf(_fp,"emit_%s_reloc(cbuf, ", d32_hi_lo ); + emit_replacement(); fprintf(_fp,", "); + fprintf(_fp,"opnd_array(%d)->%s_reloc(), ", + _operand_idx, disp_constant); + fprintf(_fp, "%d", _reloc_form);fprintf(_fp, ");"); + fprintf(_fp,"\n"); fprintf(_fp,"} else {\n"); fprintf(_fp," emit_%s(cbuf, ", d32_hi_lo); emit_replacement(); fprintf(_fp, ");\n"); fprintf(_fp,"}");