comparison src/cpu/sparc/vm/sharedRuntime_sparc.cpp @ 342:37f87013dfd8

6711316: Open source the Garbage-First garbage collector Summary: First mercurial integration of the code for the Garbage-First garbage collector. Reviewed-by: apetrusenko, iveresov, jmasa, sgoldman, tonyp, ysr
author ysr
date Thu, 05 Jun 2008 15:57:56 -0700
parents 018d5b58dd4f
children 6aae2f9d0294
comparison
equal deleted inserted replaced
189:0b27f3512f9e 342:37f87013dfd8
697 #endif // _LP64 697 #endif // _LP64
698 698
699 // Stores long into offset pointed to by base 699 // Stores long into offset pointed to by base
700 void AdapterGenerator::store_c2i_long(Register r, Register base, 700 void AdapterGenerator::store_c2i_long(Register r, Register base,
701 const int st_off, bool is_stack) { 701 const int st_off, bool is_stack) {
702 #ifdef COMPILER2
703 #ifdef _LP64 702 #ifdef _LP64
704 // In V9, longs are given 2 64-bit slots in the interpreter, but the 703 // In V9, longs are given 2 64-bit slots in the interpreter, but the
705 // data is passed in only 1 slot. 704 // data is passed in only 1 slot.
706 __ stx(r, base, next_arg_slot(st_off)); 705 __ stx(r, base, next_arg_slot(st_off));
707 #else 706 #else
707 #ifdef COMPILER2
708 // Misaligned store of 64-bit data 708 // Misaligned store of 64-bit data
709 __ stw(r, base, arg_slot(st_off)); // lo bits 709 __ stw(r, base, arg_slot(st_off)); // lo bits
710 __ srlx(r, 32, r); 710 __ srlx(r, 32, r);
711 __ stw(r, base, next_arg_slot(st_off)); // hi bits 711 __ stw(r, base, next_arg_slot(st_off)); // hi bits
712 #endif // _LP64
713 #else 712 #else
714 if (is_stack) { 713 if (is_stack) {
715 // Misaligned store of 64-bit data 714 // Misaligned store of 64-bit data
716 __ stw(r, base, arg_slot(st_off)); // lo bits 715 __ stw(r, base, arg_slot(st_off)); // lo bits
717 __ srlx(r, 32, r); 716 __ srlx(r, 32, r);
719 } else { 718 } else {
720 __ stw(r->successor(), base, arg_slot(st_off) ); // lo bits 719 __ stw(r->successor(), base, arg_slot(st_off) ); // lo bits
721 __ stw(r , base, next_arg_slot(st_off)); // hi bits 720 __ stw(r , base, next_arg_slot(st_off)); // hi bits
722 } 721 }
723 #endif // COMPILER2 722 #endif // COMPILER2
723 #endif // _LP64
724 tag_c2i_arg(frame::TagCategory2, base, st_off, r); 724 tag_c2i_arg(frame::TagCategory2, base, st_off, r);
725 } 725 }
726 726
727 void AdapterGenerator::store_c2i_object(Register r, Register base, 727 void AdapterGenerator::store_c2i_object(Register r, Register base,
728 const int st_off) { 728 const int st_off) {