1090 for ( int i = first_arg ; i < arg_count ; i++ ) {
1091 if (args[i].first()->is_Register()) {
1092 x = x + args[i].first()->as_Register();
1093 } else if (args[i].first()->is_FloatRegister()) {
1094 __ strd(args[i].first()->as_FloatRegister(), Address(__ pre(sp, -2 * wordSize)));
1095 }
1096 }
1097 __ push(x, sp);
1098 }
1099
1100 static void restore_args(MacroAssembler *masm, int arg_count, int first_arg, VMRegPair *args) {
1101 RegSet x;
1102 for ( int i = first_arg ; i < arg_count ; i++ ) {
1103 if (args[i].first()->is_Register()) {
1104 x = x + args[i].first()->as_Register();
1105 } else {
1106 ;
1107 }
1108 }
1109 __ pop(x, sp);
1110 for ( int i = first_arg ; i < arg_count ; i++ ) {
1111 if (args[i].first()->is_Register()) {
1112 ;
1113 } else if (args[i].first()->is_FloatRegister()) {
1114 __ ldrd(args[i].first()->as_FloatRegister(), Address(__ post(sp, 2 * wordSize)));
1115 }
1116 }
1117 }
1118
1119
1120 // Check GCLocker::needs_gc and enter the runtime if it's true. This
1121 // keeps a new JNI critical region from starting until a GC has been
1122 // forced. Save down any oops in registers and describe them in an
1123 // OopMap.
1124 static void check_needs_gc_for_critical_native(MacroAssembler* masm,
1125 int stack_slots,
1126 int total_c_args,
1127 int total_in_args,
1128 int arg_save_area,
1129 OopMapSet* oop_maps,
1130 VMRegPair* in_regs,
|
1090 for ( int i = first_arg ; i < arg_count ; i++ ) {
1091 if (args[i].first()->is_Register()) {
1092 x = x + args[i].first()->as_Register();
1093 } else if (args[i].first()->is_FloatRegister()) {
1094 __ strd(args[i].first()->as_FloatRegister(), Address(__ pre(sp, -2 * wordSize)));
1095 }
1096 }
1097 __ push(x, sp);
1098 }
1099
1100 static void restore_args(MacroAssembler *masm, int arg_count, int first_arg, VMRegPair *args) {
1101 RegSet x;
1102 for ( int i = first_arg ; i < arg_count ; i++ ) {
1103 if (args[i].first()->is_Register()) {
1104 x = x + args[i].first()->as_Register();
1105 } else {
1106 ;
1107 }
1108 }
1109 __ pop(x, sp);
1110 for ( int i = arg_count - 1 ; i >= first_arg ; i-- ) {
1111 if (args[i].first()->is_Register()) {
1112 ;
1113 } else if (args[i].first()->is_FloatRegister()) {
1114 __ ldrd(args[i].first()->as_FloatRegister(), Address(__ post(sp, 2 * wordSize)));
1115 }
1116 }
1117 }
1118
1119
1120 // Check GCLocker::needs_gc and enter the runtime if it's true. This
1121 // keeps a new JNI critical region from starting until a GC has been
1122 // forced. Save down any oops in registers and describe them in an
1123 // OopMap.
1124 static void check_needs_gc_for_critical_native(MacroAssembler* masm,
1125 int stack_slots,
1126 int total_c_args,
1127 int total_in_args,
1128 int arg_save_area,
1129 OopMapSet* oop_maps,
1130 VMRegPair* in_regs,
|