Print this page
rev 1838 : 6961690: load oops from constant table on SPARC
Summary: oops should be loaded from the constant table of an nmethod instead of materializing them with a long code sequence.
Reviewed-by:

Split Close
Expand all
Collapse all
          --- old/src/share/vm/adlc/archDesc.hpp
          +++ new/src/share/vm/adlc/archDesc.hpp
   1    1  /*
   2      - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved.
        2 + * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
   3    3   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4    4   *
   5    5   * This code is free software; you can redistribute it and/or modify it
   6    6   * under the terms of the GNU General Public License version 2 only, as
   7    7   * published by the Free Software Foundation.
   8    8   *
   9    9   * This code is distributed in the hope that it will be useful, but WITHOUT
  10   10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11   11   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12   12   * version 2 for more details (a copy is included in the LICENSE file that
↓ open down ↓ 103 lines elided ↑ open up ↑
 116  116  
 117  117    // The Architecture Description identifies which user-defined operand can be used
 118  118    // to access [stack_pointer + offset]
 119  119    OperandForm  *_cisc_spill_operand;
 120  120  
 121  121    // Methods for outputting the DFA
 122  122    void gen_match(FILE *fp, MatchList &mlist, ProductionState &status, Dict &operands_chained_from);
 123  123    void chain_rule(FILE *fp, const char *indent, const char *ideal,
 124  124                    const Expr *icost, const char *irule,
 125  125                    Dict &operands_chained_from, ProductionState &status);
 126      -  void chain_rule_c(FILE *fp, char *indent, char *ideal, char *irule);  // %%%%% TODO: remove this
 127  126    void expand_opclass(FILE *fp, const char *indent, const Expr *cost,
 128  127                        const char *result_type, ProductionState &status);
 129  128    Expr *calc_cost(FILE *fp, const char *spaces, MatchList &mList, ProductionState &status);
 130  129    void prune_matchlist(Dict &minimize, MatchList &mlist);
 131  130  
 132  131    // Helper function that outputs code to generate an instruction in MachNodeGenerator
 133  132    void buildMachNode(FILE *fp_cpp, InstructForm *inst, const char *indent);
 134  133  
 135  134  public:
 136  135    ArchDesc();
↓ open down ↓ 149 lines elided ↑ open up ↑
 286  285  
 287  286    // output declaration of class State
 288  287    void defineStateClass(FILE *fp);
 289  288  
 290  289    // Generator for MachOper objects given integer type
 291  290    void buildMachOperGenerator(FILE *fp_cpp);
 292  291    // Generator for MachNode objects given integer type
 293  292    void buildMachNodeGenerator(FILE *fp_cpp);
 294  293  
 295  294    // Generator for Expand methods for instructions with expand rules
 296      -  void defineExpand(FILE *fp, InstructForm *node);
      295 +  void defineExpand      (FILE *fp, InstructForm *node);
 297  296    // Generator for Peephole methods for instructions with peephole rules
 298      -  void definePeephole(FILE *fp, InstructForm *node);
      297 +  void definePeephole    (FILE *fp, InstructForm *node);
 299  298    // Generator for Size methods for instructions
 300      -  void defineSize(FILE *fp, InstructForm &node);
      299 +  void defineSize        (FILE *fp, InstructForm &node);
      300 +
      301 +public:
      302 +  // Generator for EvalConstantValue methods for instructions
      303 +  void defineEvalConstant(FILE *fp, InstructForm &node);
 301  304    // Generator for Emit methods for instructions
 302      -  void defineEmit(FILE *fp, InstructForm &node);
      305 +  void defineEmit        (FILE *fp, InstructForm &node);
      306 +
 303  307    // Define a MachOper encode method
 304  308    void define_oper_interface(FILE *fp, OperandForm &oper, FormDict &globals,
 305  309                               const char *name, const char *encoding);
 306  310  
 307  311    // Methods to construct the MachNode class hierarchy
 308  312    // Return the type signature for the ideal operation
 309  313    const char *getIdealType(const char *idealOp);
 310  314    // Declare and define the classes derived from MachOper and MachNode
 311  315    void declareClasses(FILE *fp_hpp);
 312  316    void defineClasses(FILE *fp_cpp);
↓ open down ↓ 77 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX