Mercurial > hg > graal-jvmci-8
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)(), |