< prev index next >

src/hotspot/cpu/ppc/c1_Runtime1_ppc.cpp

Print this page

425       }
426       break;
427 
428     case C1StubId::counter_overflow_id:
429         // Bci and method are on stack.
430         oop_maps = stub_call_with_stack_parms(sasm, noreg, CAST_FROM_FN_PTR(address, counter_overflow), 2);
431       break;
432 
433     case C1StubId::new_type_array_id:
434     case C1StubId::new_object_array_id:
435       {
436         if (id == C1StubId::new_type_array_id) {
437           __ set_info("new_type_array", dont_gc_arguments);
438         } else {
439           __ set_info("new_object_array", dont_gc_arguments);
440         }
441 
442 #ifdef ASSERT
443         // Assert object type is really an array of the proper kind.
444         {
445           int tag = (id == C1StubId::new_type_array_id) ? Klass::_lh_array_tag_type_value : Klass::_lh_array_tag_obj_value;
446           Label ok;
447           __ lwz(R0, in_bytes(Klass::layout_helper_offset()), R4_ARG2);
448           __ srawi(R0, R0, Klass::_lh_array_tag_shift);
449           __ cmpwi(CR0, R0, tag);
450           __ beq(CR0, ok);
451           __ stop("assert(is an array klass)");
452           __ should_not_reach_here();
453           __ bind(ok);
454         }
455 #endif // ASSERT
456 
457         // We don't support eden allocation.
458 
459         if (id == C1StubId::new_type_array_id) {
460           oop_maps = generate_stub_call(sasm, R3_RET, CAST_FROM_FN_PTR(address, new_type_array), R4_ARG2, R5_ARG3);
461         } else {
462           oop_maps = generate_stub_call(sasm, R3_RET, CAST_FROM_FN_PTR(address, new_object_array), R4_ARG2, R5_ARG3);
463         }
464       }
465       break;

425       }
426       break;
427 
428     case C1StubId::counter_overflow_id:
429         // Bci and method are on stack.
430         oop_maps = stub_call_with_stack_parms(sasm, noreg, CAST_FROM_FN_PTR(address, counter_overflow), 2);
431       break;
432 
433     case C1StubId::new_type_array_id:
434     case C1StubId::new_object_array_id:
435       {
436         if (id == C1StubId::new_type_array_id) {
437           __ set_info("new_type_array", dont_gc_arguments);
438         } else {
439           __ set_info("new_object_array", dont_gc_arguments);
440         }
441 
442 #ifdef ASSERT
443         // Assert object type is really an array of the proper kind.
444         {
445           int tag = (id == C1StubId::new_type_array_id) ? Klass::_lh_array_tag_type_value : Klass::_lh_array_tag_ref_value;
446           Label ok;
447           __ lwz(R0, in_bytes(Klass::layout_helper_offset()), R4_ARG2);
448           __ srawi(R0, R0, Klass::_lh_array_tag_shift);
449           __ cmpwi(CR0, R0, tag);
450           __ beq(CR0, ok);
451           __ stop("assert(is an array klass)");
452           __ should_not_reach_here();
453           __ bind(ok);
454         }
455 #endif // ASSERT
456 
457         // We don't support eden allocation.
458 
459         if (id == C1StubId::new_type_array_id) {
460           oop_maps = generate_stub_call(sasm, R3_RET, CAST_FROM_FN_PTR(address, new_type_array), R4_ARG2, R5_ARG3);
461         } else {
462           oop_maps = generate_stub_call(sasm, R3_RET, CAST_FROM_FN_PTR(address, new_object_array), R4_ARG2, R5_ARG3);
463         }
464       }
465       break;
< prev index next >