annotate clang-tools-extra/clangd/Context.cpp @ 165:597b3f1c2c93

fix call createTailCallEliminationPass
author anatofuz
date Tue, 24 Mar 2020 15:30:52 +0900
parents 1d019706d866
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 //===--- Context.cpp ---------------------------------------------*- C++-*-===//
anatofuz
parents:
diff changeset
2 //
anatofuz
parents:
diff changeset
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
anatofuz
parents:
diff changeset
4 // See https://llvm.org/LICENSE.txt for license information.
anatofuz
parents:
diff changeset
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
anatofuz
parents:
diff changeset
6 //
anatofuz
parents:
diff changeset
7 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
8
anatofuz
parents:
diff changeset
9 #include "Context.h"
anatofuz
parents:
diff changeset
10 #include <cassert>
anatofuz
parents:
diff changeset
11
anatofuz
parents:
diff changeset
12 namespace clang {
anatofuz
parents:
diff changeset
13 namespace clangd {
anatofuz
parents:
diff changeset
14
anatofuz
parents:
diff changeset
15 Context Context::empty() { return Context(/*DataPtr=*/nullptr); }
anatofuz
parents:
diff changeset
16
anatofuz
parents:
diff changeset
17 Context::Context(std::shared_ptr<const Data> DataPtr)
anatofuz
parents:
diff changeset
18 : DataPtr(std::move(DataPtr)) {}
anatofuz
parents:
diff changeset
19
anatofuz
parents:
diff changeset
20 Context Context::clone() const { return Context(DataPtr); }
anatofuz
parents:
diff changeset
21
anatofuz
parents:
diff changeset
22 static Context &currentContext() {
anatofuz
parents:
diff changeset
23 static thread_local auto C = Context::empty();
anatofuz
parents:
diff changeset
24 return C;
anatofuz
parents:
diff changeset
25 }
anatofuz
parents:
diff changeset
26
anatofuz
parents:
diff changeset
27 const Context &Context::current() { return currentContext(); }
anatofuz
parents:
diff changeset
28
anatofuz
parents:
diff changeset
29 Context Context::swapCurrent(Context Replacement) {
anatofuz
parents:
diff changeset
30 std::swap(Replacement, currentContext());
anatofuz
parents:
diff changeset
31 return Replacement;
anatofuz
parents:
diff changeset
32 }
anatofuz
parents:
diff changeset
33
anatofuz
parents:
diff changeset
34 } // namespace clangd
anatofuz
parents:
diff changeset
35 } // namespace clang