Bug 676584: Use atomic instructions for iOS. Minor cleanip.

r=ted.mielczarek
Modified Files: _darwin.h uxproces.c


git-svn-id: svn://10.0.0.236/trunk@262721 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
wtc%google.com
2011-08-18 23:36:33 +00:00
parent a7198859e7
commit 7680a1b66c
2 changed files with 20 additions and 0 deletions

View File

@@ -40,6 +40,7 @@
#include "prthread.h"
#include <libkern/OSAtomic.h>
#include <sys/syscall.h>
#ifdef __APPLE__
@@ -57,6 +58,8 @@
#define _PR_SI_ARCHITECTURE "ppc"
#elif defined(__arm__)
#define _PR_SI_ARCHITECTURE "arm"
#else
#error "Unknown CPU architecture"
#endif
#define PR_DLL_SUFFIX ".dylib"
@@ -151,6 +154,22 @@ extern PRInt32 _PR_Darwin_x86_64_AtomicAdd(PRInt32 *ptr, PRInt32 val);
#define _MD_ATOMIC_ADD(ptr, val) _PR_Darwin_x86_64_AtomicAdd(ptr, val)
#endif /* __x86_64__ */
#ifdef __arm__
#define _PR_HAVE_ATOMIC_OPS
#define _MD_INIT_ATOMIC()
#define _MD_ATOMIC_INCREMENT(val) OSAtomicIncrement32(val)
#define _MD_ATOMIC_DECREMENT(val) OSAtomicDecrement32(val)
static inline PRInt32 _MD_ATOMIC_SET(PRInt32 *val, PRInt32 newval)
{
PRInt32 oldval;
do {
oldval = *val;
} while (!OSAtomicCompareAndSwap32(oldval, newval, val));
return oldval;
}
#define _MD_ATOMIC_ADD(ptr, val) OSAtomicAdd32(val, ptr)
#endif /* __arm__ */
#define USE_SETJMP
#if !defined(_PR_PTHREADS)

View File

@@ -190,6 +190,7 @@ ForkAndExec(
#ifdef HAVE_CRT_EXTERNS_H
childEnvp = *(_NSGetEnviron());
#else
/* _NSGetEnviron() is not available on iOS. */
PR_DELETE(process);
PR_SetError(PR_NOT_IMPLEMENTED_ERROR, 0);
return NULL;