370 bool append_unsafe_put_raw(ciMethod* callee, BasicType t);
371 bool append_unsafe_prefetch(ciMethod* callee, bool is_store, bool is_static);
372 void append_unsafe_CAS(ciMethod* callee);
373 bool append_unsafe_get_and_set_obj(ciMethod* callee, bool is_add);
374
375 void print_inlining(ciMethod* callee, const char* msg = NULL, bool success = true);
376
377 void profile_call(ciMethod* callee, Value recv, ciKlass* predicted_holder, Values* obj_args, bool inlined);
378 void profile_return_type(Value ret, ciMethod* callee, ciMethod* m = NULL, int bci = -1);
379 void profile_invocation(ciMethod* inlinee, ValueStack* state);
380
381 // Shortcuts to profiling control.
382 bool is_profiling() { return _compilation->is_profiling(); }
383 bool count_invocations() { return _compilation->count_invocations(); }
384 bool count_backedges() { return _compilation->count_backedges(); }
385 bool profile_branches() { return _compilation->profile_branches(); }
386 bool profile_calls() { return _compilation->profile_calls(); }
387 bool profile_inlined_calls() { return _compilation->profile_inlined_calls(); }
388 bool profile_checkcasts() { return _compilation->profile_checkcasts(); }
389
390 Values* args_list_for_profiling(int& start, bool may_have_receiver);
391 Values* collect_args_for_profiling(Values* args, bool may_have_receiver);
392
393 public:
394 NOT_PRODUCT(void print_stats();)
395
396 // initialization
397 static void initialize();
398
399 // public
400 static bool can_trap(ciMethod* method, Bytecodes::Code code) {
401 assert(0 <= code && code < Bytecodes::number_of_java_codes, "illegal bytecode");
402 if (_can_trap[code]) return true;
403 // special handling for finalizer registration
404 return code == Bytecodes::_return && method->intrinsic_id() == vmIntrinsics::_Object_init;
405 }
406
407 // creation
408 GraphBuilder(Compilation* compilation, IRScope* scope);
409 static void sort_top_into_worklist(BlockList* worklist, BlockBegin* top);
410
411 BlockBegin* start() const { return _start; }
|
370 bool append_unsafe_put_raw(ciMethod* callee, BasicType t);
371 bool append_unsafe_prefetch(ciMethod* callee, bool is_store, bool is_static);
372 void append_unsafe_CAS(ciMethod* callee);
373 bool append_unsafe_get_and_set_obj(ciMethod* callee, bool is_add);
374
375 void print_inlining(ciMethod* callee, const char* msg = NULL, bool success = true);
376
377 void profile_call(ciMethod* callee, Value recv, ciKlass* predicted_holder, Values* obj_args, bool inlined);
378 void profile_return_type(Value ret, ciMethod* callee, ciMethod* m = NULL, int bci = -1);
379 void profile_invocation(ciMethod* inlinee, ValueStack* state);
380
381 // Shortcuts to profiling control.
382 bool is_profiling() { return _compilation->is_profiling(); }
383 bool count_invocations() { return _compilation->count_invocations(); }
384 bool count_backedges() { return _compilation->count_backedges(); }
385 bool profile_branches() { return _compilation->profile_branches(); }
386 bool profile_calls() { return _compilation->profile_calls(); }
387 bool profile_inlined_calls() { return _compilation->profile_inlined_calls(); }
388 bool profile_checkcasts() { return _compilation->profile_checkcasts(); }
389
390 Values* args_list_for_profiling(ciMethod* target, int& start, bool may_have_receiver);
391 Values* collect_args_for_profiling(Values* args, ciMethod* target, bool may_have_receiver);
392
393 public:
394 NOT_PRODUCT(void print_stats();)
395
396 // initialization
397 static void initialize();
398
399 // public
400 static bool can_trap(ciMethod* method, Bytecodes::Code code) {
401 assert(0 <= code && code < Bytecodes::number_of_java_codes, "illegal bytecode");
402 if (_can_trap[code]) return true;
403 // special handling for finalizer registration
404 return code == Bytecodes::_return && method->intrinsic_id() == vmIntrinsics::_Object_init;
405 }
406
407 // creation
408 GraphBuilder(Compilation* compilation, IRScope* scope);
409 static void sort_top_into_worklist(BlockList* worklist, BlockBegin* top);
410
411 BlockBegin* start() const { return _start; }
|