- Revision
- 242892
- Author
- [email protected]
- Date
- 2019-03-13 11:09:00 -0700 (Wed, 13 Mar 2019)
Log Message
Fix testbmalloc build
https://bugs.webkit.org/show_bug.cgi?id=195660
Patch by Sam Weinig <[email protected]> on 2019-03-13
Reviewed by Geoffrey Garen.
* bmalloc.xcodeproj/project.pbxproj:
Link Foundation in when building testbmalloc. Since bmalloc requires Foundation, and is a static
library, all clients of bmalloc are required to link it themselves.
* bmalloc/IsoPageInlines.h:
* bmalloc/StdLibExtras.h: Added.
(bmalloc::bitwise_cast):
Add bitwise_cast implementation, and use it in IsoPageInlines.h. It is a layering violation
to expect the one from WTF to be available, as seems to have been the case.
Modified Paths
Added Paths
Diff
Modified: trunk/Source/bmalloc/ChangeLog (242891 => 242892)
--- trunk/Source/bmalloc/ChangeLog 2019-03-13 17:57:57 UTC (rev 242891)
+++ trunk/Source/bmalloc/ChangeLog 2019-03-13 18:09:00 UTC (rev 242892)
@@ -1,3 +1,20 @@
+2019-03-13 Sam Weinig <[email protected]>
+
+ Fix testbmalloc build
+ https://bugs.webkit.org/show_bug.cgi?id=195660
+
+ Reviewed by Geoffrey Garen.
+
+ * bmalloc.xcodeproj/project.pbxproj:
+ Link Foundation in when building testbmalloc. Since bmalloc requires Foundation, and is a static
+ library, all clients of bmalloc are required to link it themselves.
+
+ * bmalloc/IsoPageInlines.h:
+ * bmalloc/StdLibExtras.h: Added.
+ (bmalloc::bitwise_cast):
+ Add bitwise_cast implementation, and use it in IsoPageInlines.h. It is a layering violation
+ to expect the one from WTF to be available, as seems to have been the case.
+
2019-03-12 Robin Morisset <[email protected]>
A lot more classes have padding that can be reduced by reordering their fields
Modified: trunk/Source/bmalloc/bmalloc/IsoPageInlines.h (242891 => 242892)
--- trunk/Source/bmalloc/bmalloc/IsoPageInlines.h 2019-03-13 17:57:57 UTC (rev 242891)
+++ trunk/Source/bmalloc/bmalloc/IsoPageInlines.h 2019-03-13 18:09:00 UTC (rev 242892)
@@ -28,6 +28,7 @@
#include "CryptoRandom.h"
#include "IsoDirectory.h"
#include "IsoPage.h"
+#include "StdLibExtras.h"
#include "VMAllocate.h"
namespace bmalloc {
Added: trunk/Source/bmalloc/bmalloc/StdLibExtras.h (0 => 242892)
--- trunk/Source/bmalloc/bmalloc/StdLibExtras.h (rev 0)
+++ trunk/Source/bmalloc/bmalloc/StdLibExtras.h 2019-03-13 18:09:00 UTC (rev 242892)
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2019 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef StdLibExtras_h
+#define StdLibExtras_h
+
+#include "BCompiler.h"
+#include <memory>
+#include <type_traits>
+
+namespace bmalloc {
+
+template<typename ToType, typename FromType>
+inline ToType bitwise_cast(FromType from)
+{
+ static_assert(sizeof(FromType) == sizeof(ToType), "bitwise_cast size of FromType and ToType must be equal!");
+#if BCOMPILER_HAS_CLANG_FEATURE(is_trivially_copyable)
+ // Not all recent STL implementations support the std::is_trivially_copyable type trait. Work around this by only checking on toolchains which have the equivalent compiler intrinsic.
+ static_assert(__is_trivially_copyable(ToType), "bitwise_cast of non-trivially-copyable type!");
+ static_assert(__is_trivially_copyable(FromType), "bitwise_cast of non-trivially-copyable type!");
+#endif
+ typename std::remove_const<ToType>::type to { };
+ std::memcpy(static_cast<void*>(&to), static_cast<void*>(&from), sizeof(to));
+ return to;
+}
+
+} // namespace bmalloc
+
+#endif // StdLibExtras_h
Modified: trunk/Source/bmalloc/bmalloc.xcodeproj/project.pbxproj (242891 => 242892)
--- trunk/Source/bmalloc/bmalloc.xcodeproj/project.pbxproj 2019-03-13 17:57:57 UTC (rev 242891)
+++ trunk/Source/bmalloc/bmalloc.xcodeproj/project.pbxproj 2019-03-13 18:09:00 UTC (rev 242892)
@@ -137,6 +137,8 @@
6599C5CD1EC3F15900A2F7BB /* AvailableMemory.h in Headers */ = {isa = PBXBuildFile; fileRef = 6599C5CB1EC3F15900A2F7BB /* AvailableMemory.h */; settings = {ATTRIBUTES = (Private, ); }; };
7939885B2076EEB60074A2E7 /* BulkDecommit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7939885A2076EEB50074A2E7 /* BulkDecommit.h */; settings = {ATTRIBUTES = (Private, ); }; };
795AB3C7206E0D340074FE76 /* PhysicalPageMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 795AB3C6206E0D250074FE76 /* PhysicalPageMap.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 7C571EFF22388B080077A3C7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 142FC6212096409E00A99362 /* Foundation.framework */; };
+ 7C571F0122388B840077A3C7 /* StdLibExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C571F0022388B840077A3C7 /* StdLibExtras.h */; settings = {ATTRIBUTES = (Private, ); }; };
AD0934331FCF406D00E85EB5 /* BCompiler.h in Headers */ = {isa = PBXBuildFile; fileRef = AD0934321FCF405000E85EB5 /* BCompiler.h */; settings = {ATTRIBUTES = (Private, ); }; };
AD14AD29202529C400890E3B /* ProcessCheck.h in Headers */ = {isa = PBXBuildFile; fileRef = AD14AD27202529A600890E3B /* ProcessCheck.h */; };
AD14AD2A202529C700890E3B /* ProcessCheck.mm in Sources */ = {isa = PBXBuildFile; fileRef = AD14AD28202529B000890E3B /* ProcessCheck.mm */; };
@@ -301,6 +303,7 @@
6599C5CB1EC3F15900A2F7BB /* AvailableMemory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AvailableMemory.h; path = bmalloc/AvailableMemory.h; sourceTree = "<group>"; };
7939885A2076EEB50074A2E7 /* BulkDecommit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BulkDecommit.h; path = bmalloc/BulkDecommit.h; sourceTree = "<group>"; };
795AB3C6206E0D250074FE76 /* PhysicalPageMap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = PhysicalPageMap.h; path = bmalloc/PhysicalPageMap.h; sourceTree = "<group>"; };
+ 7C571F0022388B840077A3C7 /* StdLibExtras.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = StdLibExtras.h; path = bmalloc/StdLibExtras.h; sourceTree = "<group>"; };
A1B89B86221DFFEE00EB4CEA /* SDKVariant.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = SDKVariant.xcconfig; sourceTree = "<group>"; };
AD0934321FCF405000E85EB5 /* BCompiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BCompiler.h; path = bmalloc/BCompiler.h; sourceTree = "<group>"; };
AD14AD27202529A600890E3B /* ProcessCheck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ProcessCheck.h; path = bmalloc/ProcessCheck.h; sourceTree = "<group>"; };
@@ -313,6 +316,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 7C571EFF22388B080077A3C7 /* Foundation.framework in Frameworks */,
0F7EB7FA1F95414C00F1ABCB /* libbmalloc.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -548,6 +552,7 @@
144469FD17A61F1F00F9EA1D /* PerThread.h */,
145F6878179E3A4400D65598 /* Range.h */,
148EFAE61D6B953B008E721E /* ScopeExit.h */,
+ 7C571F0022388B840077A3C7 /* StdLibExtras.h */,
1417F64F18B7280C0076FA3F /* Syscall.h */,
1479E21217A1A255006D4E9D /* Vector.h */,
1479E21417A1A63E006D4E9D /* VMAllocate.h */,
@@ -660,6 +665,7 @@
14DD789018F48CEB00950702 /* Sizes.h in Headers */,
14DD78BC18F48D6B00950702 /* SmallLine.h in Headers */,
14DD78BD18F48D6B00950702 /* SmallPage.h in Headers */,
+ 7C571F0122388B840077A3C7 /* StdLibExtras.h in Headers */,
14DD78CE18F48D7500950702 /* Syscall.h in Headers */,
14DD78CF18F48D7500950702 /* Vector.h in Headers */,
14DD78D018F48D7500950702 /* VMAllocate.h in Headers */,