Mercurial > hg > truffle
comparison src/share/vm/c1/c1_IR.hpp @ 1295:3cf667df43ef
6919934: JSR 292 needs to support x86 C1
Summary: This implements JSR 292 support for C1 x86.
Reviewed-by: never, jrose, kvn
author | twisti |
---|---|
date | Tue, 09 Mar 2010 20:16:19 +0100 |
parents | f70b0d9ab095 |
children | c18cbe5936b8 61b2245abf36 |
comparison
equal
deleted
inserted
replaced
1293:51db1e4b379d | 1295:3cf667df43ef |
---|---|
1 /* | 1 /* |
2 * Copyright 1999-2009 Sun Microsystems, Inc. All Rights Reserved. | 2 * Copyright 1999-2010 Sun Microsystems, Inc. All Rights Reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
240 IRScopeDebugInfo* caller() { return _caller; } | 240 IRScopeDebugInfo* caller() { return _caller; } |
241 | 241 |
242 //Whether we should reexecute this bytecode for deopt | 242 //Whether we should reexecute this bytecode for deopt |
243 bool should_reexecute(); | 243 bool should_reexecute(); |
244 | 244 |
245 void record_debug_info(DebugInformationRecorder* recorder, int pc_offset, bool topmost) { | 245 void record_debug_info(DebugInformationRecorder* recorder, int pc_offset, bool topmost, bool is_method_handle_invoke = false) { |
246 if (caller() != NULL) { | 246 if (caller() != NULL) { |
247 // Order is significant: Must record caller first. | 247 // Order is significant: Must record caller first. |
248 caller()->record_debug_info(recorder, pc_offset, false/*topmost*/); | 248 caller()->record_debug_info(recorder, pc_offset, false/*topmost*/); |
249 } | 249 } |
250 DebugToken* locvals = recorder->create_scope_values(locals()); | 250 DebugToken* locvals = recorder->create_scope_values(locals()); |
251 DebugToken* expvals = recorder->create_scope_values(expressions()); | 251 DebugToken* expvals = recorder->create_scope_values(expressions()); |
252 DebugToken* monvals = recorder->create_monitor_values(monitors()); | 252 DebugToken* monvals = recorder->create_monitor_values(monitors()); |
253 // reexecute allowed only for the topmost frame | 253 // reexecute allowed only for the topmost frame |
254 bool reexecute = topmost ? should_reexecute() : false; | 254 bool reexecute = topmost ? should_reexecute() : false; |
255 bool is_method_handle_invoke = false; | |
256 bool return_oop = false; // This flag will be ignored since it used only for C2 with escape analysis. | 255 bool return_oop = false; // This flag will be ignored since it used only for C2 with escape analysis. |
257 recorder->describe_scope(pc_offset, scope()->method(), bci(), reexecute, is_method_handle_invoke, return_oop, locvals, expvals, monvals); | 256 recorder->describe_scope(pc_offset, scope()->method(), bci(), reexecute, is_method_handle_invoke, return_oop, locvals, expvals, monvals); |
258 } | 257 } |
259 }; | 258 }; |
260 | 259 |
301 XHandlers* exception_handlers() const { return _exception_handlers; } | 300 XHandlers* exception_handlers() const { return _exception_handlers; } |
302 ValueStack* stack() const { return _stack; } | 301 ValueStack* stack() const { return _stack; } |
303 int bci() const { return _bci; } | 302 int bci() const { return _bci; } |
304 | 303 |
305 void add_register_oop(LIR_Opr opr); | 304 void add_register_oop(LIR_Opr opr); |
306 void record_debug_info(DebugInformationRecorder* recorder, int pc_offset); | 305 void record_debug_info(DebugInformationRecorder* recorder, int pc_offset, bool is_method_handle_invoke = false); |
307 | 306 |
308 CodeEmitInfo* next() const { return _next; } | 307 CodeEmitInfo* next() const { return _next; } |
309 void set_next(CodeEmitInfo* next) { _next = next; } | 308 void set_next(CodeEmitInfo* next) { _next = next; } |
310 | 309 |
311 int id() const { return _id; } | 310 int id() const { return _id; } |