1*0b57cec5SDimitry Andric //===- Core/File.cpp - A Container of Atoms -------------------------------===//
2*0b57cec5SDimitry Andric //
3*0b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*0b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5*0b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*0b57cec5SDimitry Andric //
7*0b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
8*0b57cec5SDimitry Andric 
9*0b57cec5SDimitry Andric #include "lld/Core/File.h"
10*0b57cec5SDimitry Andric #include <mutex>
11*0b57cec5SDimitry Andric 
12*0b57cec5SDimitry Andric namespace lld {
13*0b57cec5SDimitry Andric 
14*0b57cec5SDimitry Andric File::~File() = default;
15*0b57cec5SDimitry Andric 
16*0b57cec5SDimitry Andric File::AtomVector<DefinedAtom> File::_noDefinedAtoms;
17*0b57cec5SDimitry Andric File::AtomVector<UndefinedAtom> File::_noUndefinedAtoms;
18*0b57cec5SDimitry Andric File::AtomVector<SharedLibraryAtom> File::_noSharedLibraryAtoms;
19*0b57cec5SDimitry Andric File::AtomVector<AbsoluteAtom> File::_noAbsoluteAtoms;
20*0b57cec5SDimitry Andric 
parse()21*0b57cec5SDimitry Andric std::error_code File::parse() {
22*0b57cec5SDimitry Andric   std::lock_guard<std::mutex> lock(_parseMutex);
23*0b57cec5SDimitry Andric   if (!_lastError.hasValue())
24*0b57cec5SDimitry Andric     _lastError = doParse();
25*0b57cec5SDimitry Andric   return _lastError.getValue();
26*0b57cec5SDimitry Andric }
27*0b57cec5SDimitry Andric 
28*0b57cec5SDimitry Andric } // end namespace lld
29