summaryrefslogtreecommitdiff
path: root/src/class_loader.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/class_loader.cc')
-rw-r--r--src/class_loader.cc37
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