< prev index next >

src/hotspot/cpu/aarch64/interpreterRT_aarch64.cpp

Print this page
8248238: Adding Windows support to OpenJDK on AArch64

Summary: LP64 vs LLP64 changes to add Windows support

Contributed-by: Monica Beckwith <monica.beckwith@microsoft.com>, Ludovic Henry <luhenry@microsoft.com>
Reviewed-by:


 329   {
 330     jint from_obj = *(jint*)(_from+Interpreter::local_offset_in_bytes(0));
 331     _from -= Interpreter::stackElementSize;
 332 
 333     if (_num_fp_args < Argument::n_float_register_parameters_c) {
 334       *_fp_args++ = from_obj;
 335       _num_fp_args++;
 336     } else {
 337       *_to++ = from_obj;
 338       _num_fp_args++;
 339     }
 340   }
 341 
 342   virtual void pass_double()
 343   {
 344     intptr_t from_obj = *(intptr_t*)(_from+Interpreter::local_offset_in_bytes(1));
 345     _from -= 2*Interpreter::stackElementSize;
 346 
 347     if (_num_fp_args < Argument::n_float_register_parameters_c) {
 348       *_fp_args++ = from_obj;
 349       *_fp_identifiers |= (1 << _num_fp_args); // mark as double
 350       _num_fp_args++;
 351     } else {
 352       *_to++ = from_obj;
 353       _num_fp_args++;
 354     }
 355   }
 356 
 357  public:
 358   SlowSignatureHandler(const methodHandle& method, address from, intptr_t* to)
 359     : NativeSignatureIterator(method)
 360   {
 361     _from = from;
 362     _to   = to;
 363 
 364     _int_args = to - (method->is_static() ? 16 : 17);
 365     _fp_args =  to - 8;
 366     _fp_identifiers = to - 9;
 367     *(int*) _fp_identifiers = 0;
 368     _num_int_args = (method->is_static() ? 1 : 0);
 369     _num_fp_args = 0;


 329   {
 330     jint from_obj = *(jint*)(_from+Interpreter::local_offset_in_bytes(0));
 331     _from -= Interpreter::stackElementSize;
 332 
 333     if (_num_fp_args < Argument::n_float_register_parameters_c) {
 334       *_fp_args++ = from_obj;
 335       _num_fp_args++;
 336     } else {
 337       *_to++ = from_obj;
 338       _num_fp_args++;
 339     }
 340   }
 341 
 342   virtual void pass_double()
 343   {
 344     intptr_t from_obj = *(intptr_t*)(_from+Interpreter::local_offset_in_bytes(1));
 345     _from -= 2*Interpreter::stackElementSize;
 346 
 347     if (_num_fp_args < Argument::n_float_register_parameters_c) {
 348       *_fp_args++ = from_obj;
 349       *_fp_identifiers |= (1ULL << _num_fp_args); // mark as double
 350       _num_fp_args++;
 351     } else {
 352       *_to++ = from_obj;
 353       _num_fp_args++;
 354     }
 355   }
 356 
 357  public:
 358   SlowSignatureHandler(const methodHandle& method, address from, intptr_t* to)
 359     : NativeSignatureIterator(method)
 360   {
 361     _from = from;
 362     _to   = to;
 363 
 364     _int_args = to - (method->is_static() ? 16 : 17);
 365     _fp_args =  to - 8;
 366     _fp_identifiers = to - 9;
 367     *(int*) _fp_identifiers = 0;
 368     _num_int_args = (method->is_static() ? 1 : 0);
 369     _num_fp_args = 0;
< prev index next >