413 remove_useless_late_inlines(&_boxing_late_inlines, useful);
414 remove_useless_late_inlines(&_late_inlines, useful);
415 debug_only(verify_graph_edges(true/*check for no_dead_code*/);)
416 }
417
418 //------------------------------frame_size_in_words-----------------------------
419 // frame_slots in units of words
420 int Compile::frame_size_in_words() const {
421 // shift is 0 in LP32 and 1 in LP64
422 const int shift = (LogBytesPerWord - LogBytesPerInt);
423 int words = _frame_slots >> shift;
424 assert( words << shift == _frame_slots, "frame size must be properly aligned in LP64" );
425 return words;
426 }
427
428 // To bang the stack of this compiled method we use the stack size
429 // that the interpreter would need in case of a deoptimization. This
430 // removes the need to bang the stack in the deoptimization blob which
431 // in turn simplifies stack overflow handling.
432 int Compile::bang_size_in_bytes() const {
433 return MAX2(_interpreter_frame_size, frame_size_in_bytes());
434 }
435
436 // ============================================================================
437 //------------------------------CompileWrapper---------------------------------
438 class CompileWrapper : public StackObj {
439 Compile *const _compile;
440 public:
441 CompileWrapper(Compile* compile);
442
443 ~CompileWrapper();
444 };
445
446 CompileWrapper::CompileWrapper(Compile* compile) : _compile(compile) {
447 // the Compile* pointer is stored in the current ciEnv:
448 ciEnv* env = compile->env();
449 assert(env == ciEnv::current(), "must already be a ciEnv active");
450 assert(env->compiler_data() == NULL, "compile already active?");
451 env->set_compiler_data(compile);
452 assert(compile == Compile::current(), "sanity");
453
|
413 remove_useless_late_inlines(&_boxing_late_inlines, useful);
414 remove_useless_late_inlines(&_late_inlines, useful);
415 debug_only(verify_graph_edges(true/*check for no_dead_code*/);)
416 }
417
418 //------------------------------frame_size_in_words-----------------------------
419 // frame_slots in units of words
420 int Compile::frame_size_in_words() const {
421 // shift is 0 in LP32 and 1 in LP64
422 const int shift = (LogBytesPerWord - LogBytesPerInt);
423 int words = _frame_slots >> shift;
424 assert( words << shift == _frame_slots, "frame size must be properly aligned in LP64" );
425 return words;
426 }
427
428 // To bang the stack of this compiled method we use the stack size
429 // that the interpreter would need in case of a deoptimization. This
430 // removes the need to bang the stack in the deoptimization blob which
431 // in turn simplifies stack overflow handling.
432 int Compile::bang_size_in_bytes() const {
433 return MAX2(frame_size_in_bytes() + os::extra_bang_size_in_bytes(), _interpreter_frame_size);
434 }
435
436 // ============================================================================
437 //------------------------------CompileWrapper---------------------------------
438 class CompileWrapper : public StackObj {
439 Compile *const _compile;
440 public:
441 CompileWrapper(Compile* compile);
442
443 ~CompileWrapper();
444 };
445
446 CompileWrapper::CompileWrapper(Compile* compile) : _compile(compile) {
447 // the Compile* pointer is stored in the current ciEnv:
448 ciEnv* env = compile->env();
449 assert(env == ciEnv::current(), "must already be a ciEnv active");
450 assert(env->compiler_data() == NULL, "compile already active?");
451 env->set_compiler_data(compile);
452 assert(compile == Compile::current(), "sanity");
453
|