607 if (UseSSE >= 2 && VerifyFPU) {
608 st->print("\n\t");
609 st->print("# verify FPU stack (must be clean on entry)");
610 }
611
612 #ifdef ASSERT
613 if (VerifyStackAtCalls) {
614 st->print("\n\t");
615 st->print("# stack alignment check");
616 }
617 #endif
618 st->cr();
619 }
620 #endif
621
622
623 void MachPrologNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
624 Compile* C = ra_->C;
625 MacroAssembler _masm(&cbuf);
626
627 int framesize = C->output()->frame_size_in_bytes();
628 int bangsize = C->output()->bang_size_in_bytes();
629
630 __ verified_entry(framesize, C->output()->need_stack_bang(bangsize)?bangsize:0, C->in_24_bit_fp_mode(), C->stub_function() != NULL);
631
632 C->output()->set_frame_complete(cbuf.insts_size());
633
634 if (C->has_mach_constant_base_node()) {
635 // NOTE: We set the table base offset here because users might be
636 // emitted before MachConstantBaseNode.
637 ConstantTable& constant_table = C->output()->constant_table();
638 constant_table.set_table_base_offset(constant_table.calculate_table_base_offset());
639 }
640 }
641
642 uint MachPrologNode::size(PhaseRegAlloc *ra_) const {
643 return MachNode::size(ra_); // too many variables; just compute it the hard way
644 }
645
646 int MachPrologNode::reloc() const {
647 return 0; // a large enough number
648 }
649
650 //=============================================================================
|
607 if (UseSSE >= 2 && VerifyFPU) {
608 st->print("\n\t");
609 st->print("# verify FPU stack (must be clean on entry)");
610 }
611
612 #ifdef ASSERT
613 if (VerifyStackAtCalls) {
614 st->print("\n\t");
615 st->print("# stack alignment check");
616 }
617 #endif
618 st->cr();
619 }
620 #endif
621
622
623 void MachPrologNode::emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {
624 Compile* C = ra_->C;
625 MacroAssembler _masm(&cbuf);
626
627 __ verified_entry(C);
628
629 C->output()->set_frame_complete(cbuf.insts_size());
630
631 if (C->has_mach_constant_base_node()) {
632 // NOTE: We set the table base offset here because users might be
633 // emitted before MachConstantBaseNode.
634 ConstantTable& constant_table = C->output()->constant_table();
635 constant_table.set_table_base_offset(constant_table.calculate_table_base_offset());
636 }
637 }
638
639 uint MachPrologNode::size(PhaseRegAlloc *ra_) const {
640 return MachNode::size(ra_); // too many variables; just compute it the hard way
641 }
642
643 int MachPrologNode::reloc() const {
644 return 0; // a large enough number
645 }
646
647 //=============================================================================
|