4190 "Invariants."); |
4190 "Invariants."); |
4191 } |
4191 } |
4192 |
4192 |
4193 static void generate_satb_log_enqueue(bool with_frame) { |
4193 static void generate_satb_log_enqueue(bool with_frame) { |
4194 BufferBlob* bb = BufferBlob::create("enqueue_with_frame", EnqueueCodeSize); |
4194 BufferBlob* bb = BufferBlob::create("enqueue_with_frame", EnqueueCodeSize); |
4195 CodeBuffer buf(bb->instructions_begin(), bb->instructions_size()); |
4195 CodeBuffer buf(bb); |
4196 MacroAssembler masm(&buf); |
4196 MacroAssembler masm(&buf); |
4197 address start = masm.pc(); |
4197 address start = masm.pc(); |
4198 Register pre_val; |
4198 Register pre_val; |
4199 |
4199 |
4200 Label refill, restart; |
4200 Label refill, restart; |
4419 static u_char* dirty_card_log_enqueue_end = 0; |
4419 static u_char* dirty_card_log_enqueue_end = 0; |
4420 |
4420 |
4421 // This gets to assume that o0 contains the object address. |
4421 // This gets to assume that o0 contains the object address. |
4422 static void generate_dirty_card_log_enqueue(jbyte* byte_map_base) { |
4422 static void generate_dirty_card_log_enqueue(jbyte* byte_map_base) { |
4423 BufferBlob* bb = BufferBlob::create("dirty_card_enqueue", EnqueueCodeSize*2); |
4423 BufferBlob* bb = BufferBlob::create("dirty_card_enqueue", EnqueueCodeSize*2); |
4424 CodeBuffer buf(bb->instructions_begin(), bb->instructions_size()); |
4424 CodeBuffer buf(bb); |
4425 MacroAssembler masm(&buf); |
4425 MacroAssembler masm(&buf); |
4426 address start = masm.pc(); |
4426 address start = masm.pc(); |
4427 |
4427 |
4428 Label not_already_dirty, restart, refill; |
4428 Label not_already_dirty, restart, refill; |
4429 |
4429 |