1
Fork 0

openbsd: incoporate remarks

- consolidate target_record_sp_limit and target_get_sp_limit functions
  for aarch64, powerpc, arm-ios and openbsd as there are all without
  segmented stacks (no need to duplicate functions).

- rename __load_self function to rust_load_self

- use a mutex inner load_self() as underline implementation is not thread-safe
This commit is contained in:
Sébastien Marie 2015-01-30 08:15:28 +01:00
parent 3096784a3b
commit 568a451a90
3 changed files with 27 additions and 40 deletions

View file

@ -227,25 +227,15 @@ pub unsafe fn record_sp_limit(limit: uint) {
}
// aarch64 - FIXME(AARCH64): missing...
#[cfg(target_arch = "aarch64")]
unsafe fn target_record_sp_limit(_: uint) {
}
// powerpc - FIXME(POWERPC): missing...
#[cfg(target_arch = "powerpc")]
// arm-ios - iOS segmented stack is disabled for now, see related notes
// openbsd - segmented stack is disabled
#[cfg(any(target_arch = "aarch64",
target_arch = "powerpc",
all(target_arch = "arm", target_os = "ios"),
target_os = "openbsd"))]
unsafe fn target_record_sp_limit(_: uint) {
}
// iOS segmented stack is disabled for now, see related notes
#[cfg(all(target_arch = "arm", target_os = "ios"))] #[inline(always)]
unsafe fn target_record_sp_limit(_: uint) {
}
#[cfg(target_os = "openbsd")] #[inline(always)]
unsafe fn target_record_sp_limit(_: uint) {
// segmented stack is disabled
}
}
/// The counterpart of the function above, this function will fetch the current
@ -332,28 +322,18 @@ pub unsafe fn get_sp_limit() -> uint {
}
// aarch64 - FIXME(AARCH64): missing...
#[cfg(target_arch = "aarch64")]
// powerpc - FIXME(POWERPC): missing...
// arm-ios - iOS doesn't support segmented stacks yet.
// openbsd - OpenBSD doesn't support segmented stacks.
//
// This function might be called by runtime though
// so it is unsafe to unreachable, let's return a fixed constant.
#[cfg(any(target_arch = "aarch64",
target_arch = "powerpc",
all(target_arch = "arm", target_os = "ios"),
target_os = "openbsd"))]
#[inline(always)]
unsafe fn target_get_sp_limit() -> uint {
1024
}
// powepc - FIXME(POWERPC): missing...
#[cfg(target_arch = "powerpc")]
unsafe fn target_get_sp_limit() -> uint {
1024
}
// iOS doesn't support segmented stacks yet. This function might
// be called by runtime though so it is unsafe to mark it as
// unreachable, let's return a fixed constant.
#[cfg(all(target_arch = "arm", target_os = "ios"))] #[inline(always)]
unsafe fn target_get_sp_limit() -> uint {
1024
}
#[cfg(target_os = "openbsd")] #[inline(always)]
unsafe fn target_get_sp_limit() -> uint {
// segmented stack is disabled
1024
}
}