blob: 0a136336a2646d386024be4b4a27e7b62fdfb15e [file] [log] [blame]
Jim Ingham22777012010-09-23 02:01:19 +00001//===-- CPPLanguageRuntime.cpp -------------------------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
Jim Ingham5a369122010-09-28 01:25:32 +000010#include "lldb/Core/Log.h"
Jim Ingham22777012010-09-23 02:01:19 +000011#include "lldb/Core/PluginManager.h"
Jim Ingham5a369122010-09-28 01:25:32 +000012#include "lldb/Target/ObjCLanguageRuntime.h"
Jim Ingham22777012010-09-23 02:01:19 +000013
14using namespace lldb;
15using namespace lldb_private;
16
17//----------------------------------------------------------------------
18// Destructor
19//----------------------------------------------------------------------
20ObjCLanguageRuntime::~ObjCLanguageRuntime()
21{
22}
23
24ObjCLanguageRuntime::ObjCLanguageRuntime (Process *process) :
25 LanguageRuntime (process)
26{
27
Jim Ingham5a369122010-09-28 01:25:32 +000028}
29
30void
31ObjCLanguageRuntime::AddToMethodCache (lldb::addr_t class_addr, lldb::addr_t selector, lldb::addr_t impl_addr)
32{
33 Log *log = lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_STEP);
34 if (log)
35 {
36 log->Printf ("Caching: class 0x%llx selector 0x%llx implementation 0x%llx.", class_addr, selector, impl_addr);
37 }
38 m_impl_cache.insert (std::pair<ClassAndSel,lldb::addr_t> (ClassAndSel(class_addr, selector), impl_addr));
39}
40
41lldb::addr_t
42ObjCLanguageRuntime::LookupInMethodCache (lldb::addr_t class_addr, lldb::addr_t selector)
43{
44 MsgImplMap::iterator pos, end = m_impl_cache.end();
45 pos = m_impl_cache.find (ClassAndSel(class_addr, selector));
46 if (pos != end)
47 return (*pos).second;
48 return LLDB_INVALID_ADDRESS;
49}
50