equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved. |
3 * Copyright (c) 2014, Red Hat Inc. All rights reserved. |
3 * Copyright (c) 2014, Red Hat Inc. All rights reserved. |
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
5 * |
5 * |
6 * This code is free software; you can redistribute it and/or modify it |
6 * This code is free software; you can redistribute it and/or modify it |
7 * under the terms of the GNU General Public License version 2 only, as |
7 * under the terms of the GNU General Public License version 2 only, as |
1177 SATBMarkQueue::byte_offset_of_buf())); |
1177 SATBMarkQueue::byte_offset_of_buf())); |
1178 |
1178 |
1179 Label done; |
1179 Label done; |
1180 Label runtime; |
1180 Label runtime; |
1181 |
1181 |
|
1182 // Is marking still active? |
|
1183 if (in_bytes(SATBMarkQueue::byte_width_of_active()) == 4) { |
|
1184 __ ldrw(tmp, in_progress); |
|
1185 } else { |
|
1186 assert(in_bytes(SATBMarkQueue::byte_width_of_active()) == 1, "Assumption"); |
|
1187 __ ldrb(tmp, in_progress); |
|
1188 } |
|
1189 __ cbzw(tmp, done); |
|
1190 |
1182 // Can we store original value in the thread's buffer? |
1191 // Can we store original value in the thread's buffer? |
1183 __ ldr(tmp, queue_index); |
1192 __ ldr(tmp, queue_index); |
1184 __ cbz(tmp, runtime); |
1193 __ cbz(tmp, runtime); |
1185 |
1194 |
1186 __ sub(tmp, tmp, wordSize); |
1195 __ sub(tmp, tmp, wordSize); |