73 }
74
75 void C1_MacroAssembler::remove_frame(int frame_size_in_bytes) {
76 add_slow(SP, SP, frame_size_in_bytes);
77 raw_pop(FP, LR);
78 }
79
80 void C1_MacroAssembler::verified_entry() {
81 if (C1Breakpoint) {
82 breakpoint();
83 }
84 }
85
86 // Puts address of allocated object into register `obj` and end of allocated object into register `obj_end`.
87 void C1_MacroAssembler::try_allocate(Register obj, Register obj_end, Register tmp1, Register tmp2,
88 RegisterOrConstant size_expression, Label& slow_case) {
89 if (UseTLAB) {
90 tlab_allocate(obj, obj_end, tmp1, size_expression, slow_case);
91 } else {
92 eden_allocate(obj, obj_end, tmp1, tmp2, size_expression, slow_case);
93 incr_allocated_bytes(size_expression, tmp1);
94 }
95 }
96
97
98 void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register len, Register tmp) {
99 assert_different_registers(obj, klass, len, tmp);
100
101 if(UseBiasedLocking && !len->is_valid()) {
102 ldr(tmp, Address(klass, Klass::prototype_header_offset()));
103 } else {
104 mov(tmp, (intptr_t)markOopDesc::prototype());
105 }
106
107 #ifdef AARCH64
108 if (UseCompressedClassPointers) {
109 str(tmp, Address(obj, oopDesc::mark_offset_in_bytes()));
110 encode_klass_not_null(tmp, klass); // Take care not to kill klass
111 str_w(tmp, Address(obj, oopDesc::klass_offset_in_bytes()));
112 } else {
113 assert(oopDesc::mark_offset_in_bytes() + wordSize == oopDesc::klass_offset_in_bytes(), "adjust this code");
|
73 }
74
75 void C1_MacroAssembler::remove_frame(int frame_size_in_bytes) {
76 add_slow(SP, SP, frame_size_in_bytes);
77 raw_pop(FP, LR);
78 }
79
80 void C1_MacroAssembler::verified_entry() {
81 if (C1Breakpoint) {
82 breakpoint();
83 }
84 }
85
86 // Puts address of allocated object into register `obj` and end of allocated object into register `obj_end`.
87 void C1_MacroAssembler::try_allocate(Register obj, Register obj_end, Register tmp1, Register tmp2,
88 RegisterOrConstant size_expression, Label& slow_case) {
89 if (UseTLAB) {
90 tlab_allocate(obj, obj_end, tmp1, size_expression, slow_case);
91 } else {
92 eden_allocate(obj, obj_end, tmp1, tmp2, size_expression, slow_case);
93 }
94 }
95
96
97 void C1_MacroAssembler::initialize_header(Register obj, Register klass, Register len, Register tmp) {
98 assert_different_registers(obj, klass, len, tmp);
99
100 if(UseBiasedLocking && !len->is_valid()) {
101 ldr(tmp, Address(klass, Klass::prototype_header_offset()));
102 } else {
103 mov(tmp, (intptr_t)markOopDesc::prototype());
104 }
105
106 #ifdef AARCH64
107 if (UseCompressedClassPointers) {
108 str(tmp, Address(obj, oopDesc::mark_offset_in_bytes()));
109 encode_klass_not_null(tmp, klass); // Take care not to kill klass
110 str_w(tmp, Address(obj, oopDesc::klass_offset_in_bytes()));
111 } else {
112 assert(oopDesc::mark_offset_in_bytes() + wordSize == oopDesc::klass_offset_in_bytes(), "adjust this code");
|