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)(), |