369 bool append_unsafe_get_raw(ciMethod* callee, BasicType t);
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; }
|
369 bool append_unsafe_get_raw(ciMethod* callee, BasicType t);
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 bool profile_parameters() { return _compilation->profile_parameters(); }
390 bool profile_arguments() { return _compilation->profile_arguments(); }
391 bool profile_return() { return _compilation->profile_return(); }
392
393 Values* args_list_for_profiling(ciMethod* target, int& start, bool may_have_receiver);
394 Values* collect_args_for_profiling(Values* args, ciMethod* target, bool may_have_receiver);
395
396 public:
397 NOT_PRODUCT(void print_stats();)
398
399 // initialization
400 static void initialize();
401
402 // public
403 static bool can_trap(ciMethod* method, Bytecodes::Code code) {
404 assert(0 <= code && code < Bytecodes::number_of_java_codes, "illegal bytecode");
405 if (_can_trap[code]) return true;
406 // special handling for finalizer registration
407 return code == Bytecodes::_return && method->intrinsic_id() == vmIntrinsics::_Object_init;
408 }
409
410 // creation
411 GraphBuilder(Compilation* compilation, IRScope* scope);
412 static void sort_top_into_worklist(BlockList* worklist, BlockBegin* top);
413
414 BlockBegin* start() const { return _start; }
|