diff options
Diffstat (limited to 'src/class_loader.cc')
-rw-r--r-- | src/class_loader.cc | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/class_loader.cc b/src/class_loader.cc new file mode 100644 index 0000000000..97691362c4 --- /dev/null +++ b/src/class_loader.cc @@ -0,0 +1,37 @@ +// Copyright 2011 Google Inc. All Rights Reserved. + +#include "class_loader.h" + +#include "class_linker.h" +#include "runtime.h" + +namespace art { + +const std::vector<const DexFile*>& ClassLoader::GetClassPath(const ClassLoader* class_loader) { + if (class_loader == NULL) { + return Runtime::Current()->GetClassLinker()->GetBootClassPath(); + } + return class_loader->class_path_; +} + +// TODO: get global references for these +Class* PathClassLoader::dalvik_system_PathClassLoader_ = NULL; + +const PathClassLoader* PathClassLoader::Alloc(std::vector<const DexFile*> dex_files) { + PathClassLoader* p = down_cast<PathClassLoader*>(dalvik_system_PathClassLoader_->AllocObject()); + p->SetClassPath(dex_files); + return p; +} + +void PathClassLoader::SetClass(Class* dalvik_system_PathClassLoader) { + CHECK(dalvik_system_PathClassLoader_ == NULL); + CHECK(dalvik_system_PathClassLoader != NULL); + dalvik_system_PathClassLoader_ = dalvik_system_PathClassLoader; +} + +void PathClassLoader::ResetClass() { + CHECK(dalvik_system_PathClassLoader_ != NULL); + dalvik_system_PathClassLoader_ = NULL; +} + +} // namespace art |