comparison src/share/vm/opto/compile.hpp @ 38:b789bcaf2dd9

6667610: (Escape Analysis) retry compilation without EA if it fails Summary: During split unique types EA could exceed nodes limit and fail the method compilation. Reviewed-by: rasbold
author kvn
date Thu, 06 Mar 2008 10:30:17 -0800
parents a61af66fc99e
children eac007780a58
comparison
equal deleted inserted replaced
37:73970d8c0b27 38:b789bcaf2dd9
29 class ConnectionGraph; 29 class ConnectionGraph;
30 class InlineTree; 30 class InlineTree;
31 class Int_Array; 31 class Int_Array;
32 class Matcher; 32 class Matcher;
33 class MachNode; 33 class MachNode;
34 class MachSafePointNode;
34 class Node; 35 class Node;
35 class Node_Array; 36 class Node_Array;
36 class Node_Notes; 37 class Node_Notes;
37 class OptoReg; 38 class OptoReg;
38 class PhaseCFG; 39 class PhaseCFG;
50 class TypePtr; 51 class TypePtr;
51 class TypeFunc; 52 class TypeFunc;
52 class Unique_Node_List; 53 class Unique_Node_List;
53 class nmethod; 54 class nmethod;
54 class WarmCallInfo; 55 class WarmCallInfo;
55 #ifdef ENABLE_ZAP_DEAD_LOCALS
56 class MachSafePointNode;
57 #endif
58 56
59 //------------------------------Compile---------------------------------------- 57 //------------------------------Compile----------------------------------------
60 // This class defines a top-level Compiler invocation. 58 // This class defines a top-level Compiler invocation.
61 59
62 class Compile : public Phase { 60 class Compile : public Phase {
125 private: 123 private:
126 // Fixed parameters to this compilation. 124 // Fixed parameters to this compilation.
127 const int _compile_id; 125 const int _compile_id;
128 const bool _save_argument_registers; // save/restore arg regs for trampolines 126 const bool _save_argument_registers; // save/restore arg regs for trampolines
129 const bool _subsume_loads; // Load can be matched as part of a larger op. 127 const bool _subsume_loads; // Load can be matched as part of a larger op.
128 const bool _do_escape_analysis; // Do escape analysis.
130 ciMethod* _method; // The method being compiled. 129 ciMethod* _method; // The method being compiled.
131 int _entry_bci; // entry bci for osr methods. 130 int _entry_bci; // entry bci for osr methods.
132 const TypeFunc* _tf; // My kind of signature 131 const TypeFunc* _tf; // My kind of signature
133 InlineTree* _ilt; // Ditto (temporary). 132 InlineTree* _ilt; // Ditto (temporary).
134 address _stub_function; // VM entry for stub being compiled, or NULL 133 address _stub_function; // VM entry for stub being compiled, or NULL
258 257
259 // Does this compilation allow instructions to subsume loads? User 258 // Does this compilation allow instructions to subsume loads? User
260 // instructions that subsume a load may result in an unschedulable 259 // instructions that subsume a load may result in an unschedulable
261 // instruction sequence. 260 // instruction sequence.
262 bool subsume_loads() const { return _subsume_loads; } 261 bool subsume_loads() const { return _subsume_loads; }
262 // Do escape analysis.
263 bool do_escape_analysis() const { return _do_escape_analysis; }
263 bool save_argument_registers() const { return _save_argument_registers; } 264 bool save_argument_registers() const { return _save_argument_registers; }
264 265
265 266
266 // Other fixed compilation parameters. 267 // Other fixed compilation parameters.
267 ciMethod* method() const { return _method; } 268 ciMethod* method() const { return _method; }
558 // Major entry point. Given a Scope, compile the associated method. 559 // Major entry point. Given a Scope, compile the associated method.
559 // For normal compilations, entry_bci is InvocationEntryBci. For on stack 560 // For normal compilations, entry_bci is InvocationEntryBci. For on stack
560 // replacement, entry_bci indicates the bytecode for which to compile a 561 // replacement, entry_bci indicates the bytecode for which to compile a
561 // continuation. 562 // continuation.
562 Compile(ciEnv* ci_env, C2Compiler* compiler, ciMethod* target, 563 Compile(ciEnv* ci_env, C2Compiler* compiler, ciMethod* target,
563 int entry_bci, bool subsume_loads); 564 int entry_bci, bool subsume_loads, bool do_escape_analysis);
564 565
565 // Second major entry point. From the TypeFunc signature, generate code 566 // Second major entry point. From the TypeFunc signature, generate code
566 // to pass arguments from the Java calling convention to the C calling 567 // to pass arguments from the Java calling convention to the C calling
567 // convention. 568 // convention.
568 Compile(ciEnv* ci_env, const TypeFunc *(*gen)(), 569 Compile(ciEnv* ci_env, const TypeFunc *(*gen)(),