52 } else {
53 Label Lok;
54 cmpd(CCR0, temp_reg, iCache);
55 beq(CCR0, Lok);
56 bind(Lmiss);
57 //load_const_optimized(temp_reg, SharedRuntime::get_ic_miss_stub(), R0);
58 calculate_address_from_global_toc(temp_reg, SharedRuntime::get_ic_miss_stub(), true, true, false);
59 mtctr(temp_reg);
60 bctr();
61 align(32, 12);
62 bind(Lok);
63 }
64 }
65
66
67 void C1_MacroAssembler::explicit_null_check(Register base) {
68 Unimplemented();
69 }
70
71
72 void C1_MacroAssembler::build_frame(int frame_size_in_bytes, int bang_size_in_bytes) {
73 // Avoid stack bang as first instruction. It may get overwritten by patch_verified_entry.
74 const Register return_pc = R20;
75 mflr(return_pc);
76
77 // Make sure there is enough stack space for this method's activation.
78 assert(bang_size_in_bytes >= frame_size_in_bytes, "stack bang size incorrect");
79 generate_stack_overflow_check(bang_size_in_bytes);
80
81 std(return_pc, _abi0(lr), R1_SP); // SP->lr = return_pc
82 push_frame(frame_size_in_bytes, R0); // SP -= frame_size_in_bytes
83
84 BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
85 bs->nmethod_entry_barrier(this, R20);
86 }
87
88
89 void C1_MacroAssembler::verified_entry(bool breakAtEntry) {
90 if (breakAtEntry) illtrap();
91 // build frame
92 }
|
52 } else {
53 Label Lok;
54 cmpd(CCR0, temp_reg, iCache);
55 beq(CCR0, Lok);
56 bind(Lmiss);
57 //load_const_optimized(temp_reg, SharedRuntime::get_ic_miss_stub(), R0);
58 calculate_address_from_global_toc(temp_reg, SharedRuntime::get_ic_miss_stub(), true, true, false);
59 mtctr(temp_reg);
60 bctr();
61 align(32, 12);
62 bind(Lok);
63 }
64 }
65
66
67 void C1_MacroAssembler::explicit_null_check(Register base) {
68 Unimplemented();
69 }
70
71
72 void C1_MacroAssembler::build_frame(int frame_size_in_bytes, int bang_size_in_bytes, int max_monitors) {
73 // Avoid stack bang as first instruction. It may get overwritten by patch_verified_entry.
74 const Register return_pc = R20;
75 mflr(return_pc);
76
77 // Make sure there is enough stack space for this method's activation.
78 assert(bang_size_in_bytes >= frame_size_in_bytes, "stack bang size incorrect");
79 generate_stack_overflow_check(bang_size_in_bytes);
80
81 std(return_pc, _abi0(lr), R1_SP); // SP->lr = return_pc
82 push_frame(frame_size_in_bytes, R0); // SP -= frame_size_in_bytes
83
84 BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
85 bs->nmethod_entry_barrier(this, R20);
86 }
87
88
89 void C1_MacroAssembler::verified_entry(bool breakAtEntry) {
90 if (breakAtEntry) illtrap();
91 // build frame
92 }
|