3148 LIR_Address* addr = loc->as_address_ptr(); 3149 arg->load_for_store(addr->type()); 3150 if (addr->type() == T_LONG || addr->type() == T_DOUBLE) { 3151 __ unaligned_move(arg->result(), addr); 3152 } else { 3153 __ move(arg->result(), addr); 3154 } 3155 } 3156 } 3157 3158 if (info) { 3159 __ call_runtime(entry, getThreadTemp(), phys_reg, cc->args(), info); 3160 } else { 3161 __ call_runtime_leaf(entry, getThreadTemp(), phys_reg, cc->args()); 3162 } 3163 if (result->is_valid()) { 3164 __ move(phys_reg, result); 3165 } 3166 return result; 3167 } | 3148 LIR_Address* addr = loc->as_address_ptr(); 3149 arg->load_for_store(addr->type()); 3150 if (addr->type() == T_LONG || addr->type() == T_DOUBLE) { 3151 __ unaligned_move(arg->result(), addr); 3152 } else { 3153 __ move(arg->result(), addr); 3154 } 3155 } 3156 } 3157 3158 if (info) { 3159 __ call_runtime(entry, getThreadTemp(), phys_reg, cc->args(), info); 3160 } else { 3161 __ call_runtime_leaf(entry, getThreadTemp(), phys_reg, cc->args()); 3162 } 3163 if (result->is_valid()) { 3164 __ move(phys_reg, result); 3165 } 3166 return result; 3167 } 3168 3169 void LIRGenerator::do_MemBar(MemBar* x) { 3170 if (os::is_MP()) { 3171 LIR_Code code = x->code(); 3172 switch(code) { 3173 case lir_membar_acquire : __ membar_acquire(); break; 3174 case lir_membar_release : __ membar_release(); break; 3175 case lir_membar : __ membar(); break; 3176 case lir_membar_loadload : __ membar_loadload(); break; 3177 case lir_membar_storestore: __ membar_storestore(); break; 3178 case lir_membar_loadstore : __ membar_loadstore(); break; 3179 case lir_membar_storeload : __ membar_storeload(); break; 3180 default : ShouldNotReachHere(); break; 3181 } 3182 } 3183 } 3184 |