src/share/vm/c1/c1_LIRGenerator.cpp

Print this page




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