@@ -38,9 +38,6 @@ class OnDiskBuffer : public FileOutputBuffer {
38
38
std::unique_ptr<fs::mapped_file_region> Buf)
39
39
: FileOutputBuffer(Path), Buffer(std::move(Buf)), TempPath(TempPath) {}
40
40
41
- static Expected<std::unique_ptr<OnDiskBuffer>>
42
- create (StringRef Path, size_t Size , unsigned Mode);
43
-
44
41
uint8_t *getBufferStart () const override { return (uint8_t *)Buffer->data (); }
45
42
46
43
uint8_t *getBufferEnd () const override {
@@ -78,16 +75,6 @@ class InMemoryBuffer : public FileOutputBuffer {
78
75
InMemoryBuffer (StringRef Path, MemoryBlock Buf, unsigned Mode)
79
76
: FileOutputBuffer(Path), Buffer(Buf), Mode(Mode) {}
80
77
81
- static Expected<std::unique_ptr<InMemoryBuffer>>
82
- create (StringRef Path, size_t Size , unsigned Mode) {
83
- std::error_code EC;
84
- MemoryBlock MB = Memory::allocateMappedMemory (
85
- Size , nullptr , sys::Memory::MF_READ | sys::Memory::MF_WRITE, EC);
86
- if (EC)
87
- return errorCodeToError (EC);
88
- return llvm::make_unique<InMemoryBuffer>(Path, MB, Mode);
89
- }
90
-
91
78
uint8_t *getBufferStart () const override { return (uint8_t *)Buffer.base (); }
92
79
93
80
uint8_t *getBufferEnd () const override {
@@ -111,8 +98,18 @@ class InMemoryBuffer : public FileOutputBuffer {
111
98
unsigned Mode;
112
99
};
113
100
114
- Expected<std::unique_ptr<OnDiskBuffer>>
115
- OnDiskBuffer::create (StringRef Path, size_t Size , unsigned Mode) {
101
+ static Expected<std::unique_ptr<InMemoryBuffer>>
102
+ createInMemoryBuffer (StringRef Path, size_t Size , unsigned Mode) {
103
+ std::error_code EC;
104
+ MemoryBlock MB = Memory::allocateMappedMemory (
105
+ Size , nullptr , sys::Memory::MF_READ | sys::Memory::MF_WRITE, EC);
106
+ if (EC)
107
+ return errorCodeToError (EC);
108
+ return llvm::make_unique<InMemoryBuffer>(Path, MB, Mode);
109
+ }
110
+
111
+ static Expected<std::unique_ptr<OnDiskBuffer>>
112
+ createOnDiskBuffer (StringRef Path, size_t Size , unsigned Mode) {
116
113
// Create new file in same directory but with random name.
117
114
SmallString<128 > TempPath;
118
115
int FD;
@@ -165,8 +162,8 @@ FileOutputBuffer::create(StringRef Path, size_t Size, unsigned Flags) {
165
162
case fs::file_type::regular_file:
166
163
case fs::file_type::file_not_found:
167
164
case fs::file_type::status_error:
168
- return OnDiskBuffer::create (Path, Size , Mode);
165
+ return createOnDiskBuffer (Path, Size , Mode);
169
166
default :
170
- return InMemoryBuffer::create (Path, Size , Mode);
167
+ return createInMemoryBuffer (Path, Size , Mode);
171
168
}
172
169
}
0 commit comments