blob: 7325031d55762c2f0d604961874df32ff83b509d [file] [log] [blame]
//===------- SharedMaps.h - Maps for the shared class loader --------------===//
//
// JnJVM
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "LockedMap.h"
#ifndef ISOLATE_JNJVM_SHARED_MAPS_H
#define ISOLATE_JNJVM_SHARED_MAPS_H
namespace jnjvm {
struct ltarray {
bool operator()(const ArrayUInt8* a1, const ArrayUInt8* a2) {
if (a1->size < a2->size) return true;
else if (a1->size > a2->size) return false;
else return memcmp((const char*)a1->elements, (const char*)a2->elements,
a1->size * sizeof(uint8)) < 0;
}
};
class SharedClassByteMap :
public LockedMap<const ArrayUInt8*, Class*, ltarray, JnjvmClassLoader* > {
public:
static VirtualTable* VT;
SharedClassByteMap() {
lock = mvm::Lock::allocNormal();
}
~SharedClassByteMap() {
delete lock;
}
virtual void TRACER;
};
class SharedClassNameMap :
public LockedMap<const UTF8*, CommonClass*, ltutf8, JnjvmClassLoader* > {
public:
SharedClassNameMap() {
lock = mvm::Lock::allocNormal();
}
~SharedClassNameMap() {
delete lock;
}
};
} // end namespace jnjvm
#endif //ISOLATE_JNJVM_SHARED_MAPS_H