• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /*
2   * Copyright (C) 2011 The Android Open Source Project
3   *
4   * Licensed under the Apache License, Version 2.0 (the "License");
5   * you may not use this file except in compliance with the License.
6   * You may obtain a copy of the License at
7   *
8   *      http://www.apache.org/licenses/LICENSE-2.0
9   *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  #ifndef ART_RUNTIME_JAVA_FRAME_ROOT_INFO_H_
18  #define ART_RUNTIME_JAVA_FRAME_ROOT_INFO_H_
19  
20  #include <iosfwd>
21  
22  #include "base/macros.h"
23  #include "base/mutex.h"
24  #include "gc_root.h"
25  
26  namespace art {
27  
28  class StackVisitor;
29  
30  class JavaFrameRootInfo FINAL : public RootInfo {
31   public:
JavaFrameRootInfo(uint32_t thread_id,const StackVisitor * stack_visitor,size_t vreg)32    JavaFrameRootInfo(uint32_t thread_id, const StackVisitor* stack_visitor, size_t vreg)
33       : RootInfo(kRootJavaFrame, thread_id), stack_visitor_(stack_visitor), vreg_(vreg) {
34    }
35    void Describe(std::ostream& os) const OVERRIDE
36        REQUIRES_SHARED(Locks::mutator_lock_);
37  
GetVReg()38    size_t GetVReg() const {
39      return vreg_;
40    }
GetVisitor()41    const StackVisitor* GetVisitor() const {
42      return stack_visitor_;
43    }
44  
45   private:
46    const StackVisitor* const stack_visitor_;
47    const size_t vreg_;
48  };
49  
50  }  // namespace art
51  
52  #endif  // ART_RUNTIME_JAVA_FRAME_ROOT_INFO_H_
53