From 666a8ccf6683d7e27e7ae3a16e62bf5cd27b84c5 Mon Sep 17 00:00:00 2001 From: Douglas Katzman Date: Thu, 3 Aug 2017 13:29:03 -0400 Subject: [PATCH] Default to :relocatable-heap for arm,arm64,ppc --- NEWS | 7 ++++--- make-config.sh | 4 +++- src/cold/shared.lisp | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index 51d31b10e..f8098863f 100644 --- a/NEWS +++ b/NEWS @@ -1,8 +1,9 @@ ;;;; -*- coding: utf-8; fill-column: 78 -*- changes relative to sbcl-1.3.20: - * enhancement: x86 platforms are able to relocate dynamic space anywhere - the operating system places it. This feature can be disabled by removing - :relocatable-heap from the build configuration. Not supported on Windows. + * enhancement: arm[64], pcc, and x86[-64] platforms are able to relocate + dynamic space anywhere the operating system places it. + This feature can be disabled by removing :relocatable-heap from the + build configuration. Not supported on Windows. * optimization: optimized external-format routines. changes in sbcl-1.3.20 relative to sbcl-1.3.19: diff --git a/make-config.sh b/make-config.sh index bf8538dc2..73f250f88 100755 --- a/make-config.sh +++ b/make-config.sh @@ -683,6 +683,7 @@ elif [ "$sbcl_arch" = "ppc" ]; then printf ' :stack-allocatable-lists :stack-allocatable-fixed-objects' >> $ltf printf ' :linkage-table :raw-instance-init-vops :memory-barrier-vops' >> $ltf printf ' :compare-and-swap-vops :multiply-high-vops :alien-callbacks' >> $ltf + printf ' :relocatable-heap' >> $ltf if [ "$sbcl_os" = "linux" ]; then # Use a C program to detect which kind of glibc we're building on, # to bandage across the break in source compatibility between @@ -742,7 +743,7 @@ elif [ "$sbcl_arch" = "arm" ]; then printf ' :stack-allocatable-lists :stack-allocatable-fixed-objects' >> $ltf printf ' :stack-allocatable-vectors :stack-allocatable-closures' >> $ltf printf ' :precise-arg-count-error :unwind-to-frame-and-call-vop' >> $ltf - printf ' :fp-and-pc-standard-save' >> $ltf + printf ' :fp-and-pc-standard-save :relocatable-heap' >> $ltf elif [ "$sbcl_arch" = "arm64" ]; then printf ' :64-bit :64-bit-registers :gencgc :linkage-table :fp-and-pc-standard-save' >> $ltf printf ' :alien-callbacks :precise-arg-count-error :inline-constants' >> $ltf @@ -751,6 +752,7 @@ elif [ "$sbcl_arch" = "arm64" ]; then printf ' :stack-allocatable-vectors :stack-allocatable-closures' >> $ltf printf ' :unbind-n-vop :unwind-to-frame-and-call-vop :raw-signed-word' >> $ltf printf ' :compare-and-swap-vops :memory-barrier-vops :undefined-fun-restarts' >> $ltf + printf ' :relocatable-heap' >> $ltf else # Nothing need be done in this case, but sh syntax wants a placeholder. echo > /dev/null diff --git a/src/cold/shared.lisp b/src/cold/shared.lisp index 66154dc1d..b2ca0e389 100644 --- a/src/cold/shared.lisp +++ b/src/cold/shared.lisp @@ -203,8 +203,8 @@ "One of :GENCGC or :CHENEYGC must be enabled") ("(and sb-dynamic-core (not linkage-table))" ":SB-DYNAMIC-CORE requires :LINKAGE-TABLE") - ("(and relocatable-heap (or (not (or x86 x86-64)) win32))" - "Relocatable heap requires (x86 | x86-64) + not win32") + ("(and relocatable-heap (or (not (or arm arm64 ppc x86 x86-64)) cheneygc win32))" + "Relocatable heap requires (arm[64] | ppc | x86[-64]) + gencgc + not win32") ("(and sb-linkable-runtime (not sb-dynamic-core))" ":SB-LINKABLE-RUNTIME requires :SB-DYNAMIC-CORE") ("(and sb-linkable-runtime (not (or x86 x86-64)))" -- 2.11.4.GIT