Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(642)

Side by Side Diff: third_party/tcmalloc/chromium/src/base/atomicops-internals-arm-v6plus.h

Issue 10384117: Add a chromium version abort function for tcmalloc: Abort(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011, Google Inc. 1 // Copyright (c) 2011, Google Inc.
2 // All rights reserved. 2 // All rights reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // * Redistributions of source code must retain the above copyright 8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer. 9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above 10 // * Redistributions in binary form must reproduce the above
(...skipping 22 matching lines...) Expand all
33 // 33 //
34 // This file is an internal atomic implementation, use base/atomicops.h instead. 34 // This file is an internal atomic implementation, use base/atomicops.h instead.
35 // 35 //
36 // This code implements ARM atomics for architectures V6 and newer. 36 // This code implements ARM atomics for architectures V6 and newer.
37 37
38 #ifndef BASE_ATOMICOPS_INTERNALS_ARM_V6PLUS_H_ 38 #ifndef BASE_ATOMICOPS_INTERNALS_ARM_V6PLUS_H_
39 #define BASE_ATOMICOPS_INTERNALS_ARM_V6PLUS_H_ 39 #define BASE_ATOMICOPS_INTERNALS_ARM_V6PLUS_H_
40 40
41 #include <stdio.h> 41 #include <stdio.h>
42 #include <stdlib.h> 42 #include <stdlib.h>
43 #include "base/abort.h"
43 #include "base/basictypes.h" // For COMPILE_ASSERT 44 #include "base/basictypes.h" // For COMPILE_ASSERT
44 45
45 // The LDREXD and STREXD instructions in ARM all v7 variants or above. In v6, 46 // The LDREXD and STREXD instructions in ARM all v7 variants or above. In v6,
46 // only some variants support it. For simplicity, we only use exclusive 47 // only some variants support it. For simplicity, we only use exclusive
47 // 64-bit load/store in V7 or above. 48 // 64-bit load/store in V7 or above.
48 #if defined(ARMV7) 49 #if defined(ARMV7)
49 # define BASE_ATOMICOPS_HAS_LDREXD_AND_STREXD 50 # define BASE_ATOMICOPS_HAS_LDREXD_AND_STREXD
50 #endif 51 #endif
51 52
52 typedef int32_t Atomic32; 53 typedef int32_t Atomic32;
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 : "=r" (res) 281 : "=r" (res)
281 : "r"(ptr), "Q"(*ptr)); 282 : "r"(ptr), "Q"(*ptr));
282 return res; 283 return res;
283 } 284 }
284 285
285 #else // BASE_ATOMICOPS_HAS_LDREXD_AND_STREXD 286 #else // BASE_ATOMICOPS_HAS_LDREXD_AND_STREXD
286 287
287 inline void NotImplementedFatalError(const char *function_name) { 288 inline void NotImplementedFatalError(const char *function_name) {
288 fprintf(stderr, "64-bit %s() not implemented on this platform\n", 289 fprintf(stderr, "64-bit %s() not implemented on this platform\n",
289 function_name); 290 function_name);
290 abort(); 291 tcmalloc::Abort();
291 } 292 }
292 293
293 inline Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr, 294 inline Atomic64 NoBarrier_CompareAndSwap(volatile Atomic64* ptr,
294 Atomic64 old_value, 295 Atomic64 old_value,
295 Atomic64 new_value) { 296 Atomic64 new_value) {
296 NotImplementedFatalError("NoBarrier_CompareAndSwap"); 297 NotImplementedFatalError("NoBarrier_CompareAndSwap");
297 return 0; 298 return 0;
298 } 299 }
299 300
300 inline Atomic64 NoBarrier_AtomicExchange(volatile Atomic64* ptr, 301 inline Atomic64 NoBarrier_AtomicExchange(volatile Atomic64* ptr,
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 Atomic64 old_value, 360 Atomic64 old_value,
360 Atomic64 new_value) { 361 Atomic64 new_value) {
361 MemoryBarrier(); 362 MemoryBarrier();
362 return NoBarrier_CompareAndSwap(ptr, old_value, new_value); 363 return NoBarrier_CompareAndSwap(ptr, old_value, new_value);
363 } 364 }
364 365
365 } // namespace subtle ends 366 } // namespace subtle ends
366 } // namespace base ends 367 } // namespace base ends
367 368
368 #endif // BASE_ATOMICOPS_INTERNALS_ARM_V6PLUS_H_ 369 #endif // BASE_ATOMICOPS_INTERNALS_ARM_V6PLUS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698