aboutsummaryrefslogtreecommitdiff
path: root/src/share/vm/c1/c1_IR.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/share/vm/c1/c1_IR.hpp')
-rw-r--r--src/share/vm/c1/c1_IR.hpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/share/vm/c1/c1_IR.hpp b/src/share/vm/c1/c1_IR.hpp
index e1f4c15eb..bc57300c1 100644
--- a/src/share/vm/c1/c1_IR.hpp
+++ b/src/share/vm/c1/c1_IR.hpp
@@ -254,6 +254,7 @@ class CodeEmitInfo: public CompilationResourceObj {
OopMap* _oop_map;
ValueStack* _stack; // used by deoptimization (contains also monitors
bool _is_method_handle_invoke; // true if the associated call site is a MethodHandle call site.
+ bool _deoptimize_on_exception;
FrameMap* frame_map() const { return scope()->compilation()->frame_map(); }
Compilation* compilation() const { return scope()->compilation(); }
@@ -261,7 +262,7 @@ class CodeEmitInfo: public CompilationResourceObj {
public:
// use scope from ValueStack
- CodeEmitInfo(ValueStack* stack, XHandlers* exception_handlers);
+ CodeEmitInfo(ValueStack* stack, XHandlers* exception_handlers, bool deoptimize_on_exception = false);
// make a copy
CodeEmitInfo(CodeEmitInfo* info, ValueStack* stack = NULL);
@@ -272,6 +273,7 @@ class CodeEmitInfo: public CompilationResourceObj {
IRScope* scope() const { return _scope; }
XHandlers* exception_handlers() const { return _exception_handlers; }
ValueStack* stack() const { return _stack; }
+ bool deoptimize_on_exception() const { return _deoptimize_on_exception; }
void add_register_oop(LIR_Opr opr);
void record_debug_info(DebugInformationRecorder* recorder, int pc_offset);
@@ -309,7 +311,8 @@ class IR: public CompilationResourceObj {
int max_stack() const { return top_scope()->max_stack(); } // expensive
// ir manipulation
- void optimize();
+ void optimize_blocks();
+ void eliminate_null_checks();
void compute_predecessors();
void split_critical_edges();
void compute_code();