blob: 2892e293edd3f41eb54943dff3dfbeaef5664fe5 [file] [log] [blame]
// Copyright 2011 Google Inc. All Rights Reserved.
#ifndef ART_SRC_DEX_CACHE_H_
#define ART_SRC_DEX_CACHE_H_
#include "globals.h"
#include "macros.h"
#include "object.h"
namespace art {
class Class;
class Field;
class Method;
class String;
union JValue;
class DexCache : public ObjectArray {
public:
enum ArrayIndexes {
kStrings = 0,
kClasses = 1,
kMethods = 2,
kFields = 3,
kMax = 4,
};
void Init(ObjectArray* strings,
ObjectArray* classes,
ObjectArray* methods,
ObjectArray* fields);
size_t NumStrings() const {
return GetStrings()->GetLength();
}
size_t NumClasses() const {
return GetClasses()->GetLength();
}
size_t NumMethods() const {
return GetMethods()->GetLength();
}
size_t NumFields() const {
return GetFields()->GetLength();
}
String* GetResolvedString(uint32_t string_idx) const {
return down_cast<String*>(GetStrings()->Get(string_idx));
}
void SetResolvedString(uint32_t string_idx, String* resolved) {
GetStrings()->Set(string_idx, resolved);
}
Class* GetResolvedClass(uint32_t class_idx) const {
return down_cast<Class*>(GetClasses()->Get(class_idx));
}
void SetResolvedClass(uint32_t class_idx, Class* resolved) {
GetClasses()->Set(class_idx, resolved);
}
Method* GetResolvedMethod(uint32_t method_idx) const {
return down_cast<Method*>(GetMethods()->Get(method_idx));
}
void SetResolvedMethod(uint32_t method_idx, Method* resolved) {
GetMethods()->Set(method_idx, resolved);
}
Field* GetResolvedField(uint32_t field_idx) const {
return down_cast<Field*>(GetFields()->Get(field_idx));
}
void SetResolvedfield(uint32_t field_idx, Field* resolved) {
GetFields()->Set(field_idx, resolved);
}
private:
ObjectArray* GetStrings() const {
return down_cast<ObjectArray*>(Get(kStrings));
}
ObjectArray* GetClasses() const {
return down_cast<ObjectArray*>(Get(kClasses));
}
ObjectArray* GetMethods() const {
return down_cast<ObjectArray*>(Get(kMethods));
}
ObjectArray* GetFields() const {
return down_cast<ObjectArray*>(Get(kFields));
}
DexCache();
};
} // namespace art
#endif // ART_SRC_DEX_CACHE_H_