src/share/vm/c1/c1_GraphBuilder.hpp

changeset 3969
1d7922586cf6
parent 3498
f067b4e0e04b
child 4021
7f813940ac35
equal deleted inserted replaced
3944:aba91a731143 3969:1d7922586cf6
223 223
224 // instruction helpers 224 // instruction helpers
225 void load_constant(); 225 void load_constant();
226 void load_local(ValueType* type, int index); 226 void load_local(ValueType* type, int index);
227 void store_local(ValueType* type, int index); 227 void store_local(ValueType* type, int index);
228 void store_local(ValueStack* state, Value value, ValueType* type, int index); 228 void store_local(ValueStack* state, Value value, int index);
229 void load_indexed (BasicType type); 229 void load_indexed (BasicType type);
230 void store_indexed(BasicType type); 230 void store_indexed(BasicType type);
231 void stack_op(Bytecodes::Code code); 231 void stack_op(Bytecodes::Code code);
232 void arithmetic_op(ValueType* type, Bytecodes::Code code, ValueStack* state_before = NULL); 232 void arithmetic_op(ValueType* type, Bytecodes::Code code, ValueStack* state_before = NULL);
233 void negate_op(ValueType* type); 233 void negate_op(ValueType* type);
335 // inlining of synchronized methods 335 // inlining of synchronized methods
336 void inline_sync_entry(Value lock, BlockBegin* sync_handler); 336 void inline_sync_entry(Value lock, BlockBegin* sync_handler);
337 void fill_sync_handler(Value lock, BlockBegin* sync_handler, bool default_handler = false); 337 void fill_sync_handler(Value lock, BlockBegin* sync_handler, bool default_handler = false);
338 338
339 // inliners 339 // inliners
340 bool try_inline( ciMethod* callee, bool holder_known, Value receiver = NULL); 340 bool try_inline( ciMethod* callee, bool holder_known, Bytecodes::Code bc = Bytecodes::_illegal, Value receiver = NULL);
341 bool try_inline_intrinsics(ciMethod* callee); 341 bool try_inline_intrinsics(ciMethod* callee);
342 bool try_inline_full( ciMethod* callee, bool holder_known, BlockBegin* cont_block, Value receiver); 342 bool try_inline_full( ciMethod* callee, bool holder_known, Bytecodes::Code bc = Bytecodes::_illegal, Value receiver = NULL);
343 bool try_inline_jsr(int jsr_dest_bci); 343 bool try_inline_jsr(int jsr_dest_bci);
344
345 const char* check_can_parse(ciMethod* callee) const;
346 const char* should_not_inline(ciMethod* callee) const;
344 347
345 // JSR 292 support 348 // JSR 292 support
346 bool for_method_handle_inline(ciMethod* callee); 349 bool for_method_handle_inline(ciMethod* callee);
347 bool for_invokedynamic_inline(ciMethod* callee);
348 350
349 // helpers 351 // helpers
350 void inline_bailout(const char* msg); 352 void inline_bailout(const char* msg);
351 BlockBegin* header_block(BlockBegin* entry, BlockBegin::Flag f, ValueStack* state); 353 BlockBegin* header_block(BlockBegin* entry, BlockBegin::Flag f, ValueStack* state);
352 BlockBegin* setup_start_block(int osr_bci, BlockBegin* std_entry, BlockBegin* osr_entry, ValueStack* init_state); 354 BlockBegin* setup_start_block(int osr_bci, BlockBegin* std_entry, BlockBegin* osr_entry, ValueStack* init_state);
364 bool append_unsafe_get_raw(ciMethod* callee, BasicType t); 366 bool append_unsafe_get_raw(ciMethod* callee, BasicType t);
365 bool append_unsafe_put_raw(ciMethod* callee, BasicType t); 367 bool append_unsafe_put_raw(ciMethod* callee, BasicType t);
366 bool append_unsafe_prefetch(ciMethod* callee, bool is_store, bool is_static); 368 bool append_unsafe_prefetch(ciMethod* callee, bool is_store, bool is_static);
367 void append_unsafe_CAS(ciMethod* callee); 369 void append_unsafe_CAS(ciMethod* callee);
368 370
369 NOT_PRODUCT(void print_inline_result(ciMethod* callee, bool res);) 371 void print_inlining(ciMethod* callee, const char* msg, bool success = true);
370 372
371 void profile_call(Value recv, ciKlass* predicted_holder); 373 void profile_call(ciMethod* callee, Value recv, ciKlass* predicted_holder);
372 void profile_invocation(ciMethod* inlinee, ValueStack* state); 374 void profile_invocation(ciMethod* inlinee, ValueStack* state);
373 375
374 // Shortcuts to profiling control. 376 // Shortcuts to profiling control.
375 bool is_profiling() { return _compilation->is_profiling(); } 377 bool is_profiling() { return _compilation->is_profiling(); }
376 bool count_invocations() { return _compilation->count_invocations(); } 378 bool count_invocations() { return _compilation->count_invocations(); }

mercurial