Mercurial > hg > truffle
comparison src/cpu/x86/vm/sharedRuntime_x86_32.cpp @ 165:437d03ea40b1
6703888: Compressed Oops: use the 32-bits gap after klass in a object
Summary: Use the gap also for a narrow oop field and a boxing object value.
Reviewed-by: coleenp, never
author | kvn |
---|---|
date | Wed, 21 May 2008 16:31:35 -0700 |
parents | 018d5b58dd4f |
children | d1605aabd0a1 |
comparison
equal
deleted
inserted
replaced
164:c436414a719e | 165:437d03ea40b1 |
---|---|
1918 | 1918 |
1919 int i=0; | 1919 int i=0; |
1920 int total_strings = 0; | 1920 int total_strings = 0; |
1921 int first_arg_to_pass = 0; | 1921 int first_arg_to_pass = 0; |
1922 int total_c_args = 0; | 1922 int total_c_args = 0; |
1923 int box_offset = java_lang_boxing_object::value_offset_in_bytes(); | |
1924 | 1923 |
1925 if( !method->is_static() ) { // Pass in receiver first | 1924 if( !method->is_static() ) { // Pass in receiver first |
1926 in_sig_bt[i++] = T_OBJECT; | 1925 in_sig_bt[i++] = T_OBJECT; |
1927 first_arg_to_pass = 1; | 1926 first_arg_to_pass = 1; |
1928 } | 1927 } |
2129 __ testl(in_reg, in_reg); | 2128 __ testl(in_reg, in_reg); |
2130 __ jcc(Assembler::zero, skipUnbox); | 2129 __ jcc(Assembler::zero, skipUnbox); |
2131 assert(dst.first()->is_stack() && | 2130 assert(dst.first()->is_stack() && |
2132 (!dst.second()->is_valid() || dst.second()->is_stack()), | 2131 (!dst.second()->is_valid() || dst.second()->is_stack()), |
2133 "value(s) must go into stack slots"); | 2132 "value(s) must go into stack slots"); |
2134 if ( out_sig_bt[c_arg] == T_LONG ) { | 2133 |
2134 BasicType bt = out_sig_bt[c_arg]; | |
2135 int box_offset = java_lang_boxing_object::value_offset_in_bytes(bt); | |
2136 if ( bt == T_LONG ) { | |
2135 __ movl(rbx, Address(in_reg, | 2137 __ movl(rbx, Address(in_reg, |
2136 box_offset + VMRegImpl::stack_slot_size)); | 2138 box_offset + VMRegImpl::stack_slot_size)); |
2137 __ movl(Address(rsp, reg2offset_out(dst.second())), rbx); | 2139 __ movl(Address(rsp, reg2offset_out(dst.second())), rbx); |
2138 } | 2140 } |
2139 __ movl(in_reg, Address(in_reg, box_offset)); | 2141 __ movl(in_reg, Address(in_reg, box_offset)); |