src/hotspot/cpu/s390/templateInterpreterGenerator_s390.cpp
changeset 50094 2f79462aab9b
parent 49754 ee93c1087584
child 50162 f9fe56417050
equal deleted inserted replaced
50093:55153a374d18 50094:2f79462aab9b
   549   return entry;
   549   return entry;
   550 }
   550 }
   551 
   551 
   552 //
   552 //
   553 // Args:
   553 // Args:
       
   554 //   Z_ARG2: oop of array
   554 //   Z_ARG3: aberrant index
   555 //   Z_ARG3: aberrant index
   555 //
   556 //
   556 address TemplateInterpreterGenerator::generate_ArrayIndexOutOfBounds_handler(const char * name) {
   557 address TemplateInterpreterGenerator::generate_ArrayIndexOutOfBounds_handler() {
   557   address entry = __ pc();
   558   address entry = __ pc();
   558   address excp = CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_ArrayIndexOutOfBoundsException);
   559   address excp = CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_ArrayIndexOutOfBoundsException);
   559 
   560 
   560   // Expression stack must be empty before entering the VM if an
   561   // Expression stack must be empty before entering the VM if an
   561   // exception happened.
   562   // exception happened.
   562   __ empty_expression_stack();
   563   __ empty_expression_stack();
   563 
   564 
   564   // Setup parameters.
   565   // Setup parameters.
   565   // Leave out the name and use register for array to create more detailed exceptions.
   566   // Pass register with array to create more detailed exceptions.
   566   __ load_absolute_address(Z_ARG2, (address) name);
       
   567   __ call_VM(noreg, excp, Z_ARG2, Z_ARG3);
   567   __ call_VM(noreg, excp, Z_ARG2, Z_ARG3);
   568   return entry;
   568   return entry;
   569 }
   569 }
   570 
   570 
   571 address TemplateInterpreterGenerator::generate_ClassCastException_handler() {
   571 address TemplateInterpreterGenerator::generate_ClassCastException_handler() {