Mercurial > hg > truffle
comparison src/share/vm/utilities/bitMap.cpp @ 14521:29ccc4cbabca
Merge
author | Gilles Duboscq <duboscq@ssw.jku.at> |
---|---|
date | Wed, 12 Mar 2014 13:30:08 +0100 |
parents | 8a9bb7821e28 |
children | 4ca6dc0799b6 78bbf4d43a14 |
comparison
equal
deleted
inserted
replaced
14520:f84115370178 | 14521:29ccc4cbabca |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
33 # include "os_solaris.inline.hpp" | 33 # include "os_solaris.inline.hpp" |
34 #endif | 34 #endif |
35 #ifdef TARGET_OS_FAMILY_windows | 35 #ifdef TARGET_OS_FAMILY_windows |
36 # include "os_windows.inline.hpp" | 36 # include "os_windows.inline.hpp" |
37 #endif | 37 #endif |
38 #ifdef TARGET_OS_FAMILY_aix | |
39 # include "os_aix.inline.hpp" | |
40 #endif | |
38 #ifdef TARGET_OS_FAMILY_bsd | 41 #ifdef TARGET_OS_FAMILY_bsd |
39 # include "os_bsd.inline.hpp" | 42 # include "os_bsd.inline.hpp" |
40 #endif | 43 #endif |
41 | 44 |
42 | 45 |
105 intptr_t mr = (intptr_t)inverted_bit_mask_for_range(beg, end); | 108 intptr_t mr = (intptr_t)inverted_bit_mask_for_range(beg, end); |
106 intptr_t nw = value ? (w | ~mr) : (w & mr); | 109 intptr_t nw = value ? (w | ~mr) : (w & mr); |
107 while (true) { | 110 while (true) { |
108 intptr_t res = Atomic::cmpxchg_ptr(nw, pw, w); | 111 intptr_t res = Atomic::cmpxchg_ptr(nw, pw, w); |
109 if (res == w) break; | 112 if (res == w) break; |
110 w = *pw; | 113 w = res; |
111 nw = value ? (w | ~mr) : (w & mr); | 114 nw = value ? (w | ~mr) : (w & mr); |
112 } | 115 } |
113 } | 116 } |
114 } | 117 } |
115 | 118 |