< prev index next >

src/cpu/ppc/vm/templateTable_ppc_64.cpp

Print this page
rev 7209 : [mq]: inccms


3496 
3497 // Puts allocated obj ref onto the expression stack.
3498 void TemplateTable::_new() {
3499   transition(vtos, atos);
3500 
3501   Label Lslow_case,
3502         Ldone,
3503         Linitialize_header,
3504         Lallocate_shared,
3505         Linitialize_object;  // Including clearing the fields.
3506 
3507   const Register RallocatedObject = R17_tos,
3508                  RinstanceKlass   = R9_ARG7,
3509                  Rscratch         = R11_scratch1,
3510                  Roffset          = R8_ARG6,
3511                  Rinstance_size   = Roffset,
3512                  Rcpool           = R4_ARG2,
3513                  Rtags            = R3_ARG1,
3514                  Rindex           = R5_ARG3;
3515 
3516   const bool allow_shared_alloc = Universe::heap()->supports_inline_contig_alloc() && !CMSIncrementalMode;
3517 
3518   // --------------------------------------------------------------------------
3519   // Check if fast case is possible.
3520 
3521   // Load pointers to const pool and const pool's tags array.
3522   __ get_cpool_and_tags(Rcpool, Rtags);
3523   // Load index of constant pool entry.
3524   __ get_2_byte_integer_at_bcp(1, Rindex, InterpreterMacroAssembler::Unsigned);
3525 
3526   if (UseTLAB) {
3527     // Make sure the class we're about to instantiate has been resolved
3528     // This is done before loading instanceKlass to be consistent with the order
3529     // how Constant Pool is updated (see ConstantPoolCache::klass_at_put).
3530     __ addi(Rtags, Rtags, Array<u1>::base_offset_in_bytes());
3531     __ lbzx(Rtags, Rindex, Rtags);
3532 
3533     __ cmpdi(CCR0, Rtags, JVM_CONSTANT_Class);
3534     __ bne(CCR0, Lslow_case);
3535 
3536     // Get instanceKlass (load from Rcpool + sizeof(ConstantPool) + Rindex*BytesPerWord).




3496 
3497 // Puts allocated obj ref onto the expression stack.
3498 void TemplateTable::_new() {
3499   transition(vtos, atos);
3500 
3501   Label Lslow_case,
3502         Ldone,
3503         Linitialize_header,
3504         Lallocate_shared,
3505         Linitialize_object;  // Including clearing the fields.
3506 
3507   const Register RallocatedObject = R17_tos,
3508                  RinstanceKlass   = R9_ARG7,
3509                  Rscratch         = R11_scratch1,
3510                  Roffset          = R8_ARG6,
3511                  Rinstance_size   = Roffset,
3512                  Rcpool           = R4_ARG2,
3513                  Rtags            = R3_ARG1,
3514                  Rindex           = R5_ARG3;
3515 
3516   const bool allow_shared_alloc = Universe::heap()->supports_inline_contig_alloc();
3517 
3518   // --------------------------------------------------------------------------
3519   // Check if fast case is possible.
3520 
3521   // Load pointers to const pool and const pool's tags array.
3522   __ get_cpool_and_tags(Rcpool, Rtags);
3523   // Load index of constant pool entry.
3524   __ get_2_byte_integer_at_bcp(1, Rindex, InterpreterMacroAssembler::Unsigned);
3525 
3526   if (UseTLAB) {
3527     // Make sure the class we're about to instantiate has been resolved
3528     // This is done before loading instanceKlass to be consistent with the order
3529     // how Constant Pool is updated (see ConstantPoolCache::klass_at_put).
3530     __ addi(Rtags, Rtags, Array<u1>::base_offset_in_bytes());
3531     __ lbzx(Rtags, Rindex, Rtags);
3532 
3533     __ cmpdi(CCR0, Rtags, JVM_CONSTANT_Class);
3534     __ bne(CCR0, Lslow_case);
3535 
3536     // Get instanceKlass (load from Rcpool + sizeof(ConstantPool) + Rindex*BytesPerWord).


< prev index next >