[vmkit-commits] [vmkit] r145034 - in /vmkit/trunk: include/j3/JavaAOTCompiler.h include/vmkit/MvmDenseMap.h include/vmkit/MvmDenseSet.h include/vmkit/System.h include/vmkit/Thread.h include/vmkit/UTF8.h include/vmkit/VmkitDenseMap.h include/vmkit/VmkitDenseSet.h lib/J3/Compiler/JavaAOTCompiler.cpp lib/J3/VMCore/LockedMap.h lib/J3/VMCore/Precompiled.cpp lib/Mvm/CommonThread/ctthread.cpp
Gael Thomas
gael.thomas at lip6.fr
Mon Nov 21 02:39:23 PST 2011
Author: gthomas
Date: Mon Nov 21 04:39:23 2011
New Revision: 145034
URL: http://llvm.org/viewvc/llvm-project?rev=145034&view=rev
Log:
More renaming:
MvmDenseSet.* -> VmkitDenseSet.*
MvmDenseMap.* -> VmkitDenseSet.*
MvmPair -> VmkitPair
kMvmThreadMask -> kVmkitThreadMask
GetMvmThreadMask -> GetVmkitThreadMask
Added:
vmkit/trunk/include/vmkit/VmkitDenseMap.h
- copied, changed from r145031, vmkit/trunk/include/vmkit/MvmDenseMap.h
vmkit/trunk/include/vmkit/VmkitDenseSet.h
- copied, changed from r145031, vmkit/trunk/include/vmkit/MvmDenseSet.h
Removed:
vmkit/trunk/include/vmkit/MvmDenseMap.h
vmkit/trunk/include/vmkit/MvmDenseSet.h
Modified:
vmkit/trunk/include/j3/JavaAOTCompiler.h
vmkit/trunk/include/vmkit/System.h
vmkit/trunk/include/vmkit/Thread.h
vmkit/trunk/include/vmkit/UTF8.h
vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
vmkit/trunk/lib/J3/VMCore/LockedMap.h
vmkit/trunk/lib/J3/VMCore/Precompiled.cpp
vmkit/trunk/lib/Mvm/CommonThread/ctthread.cpp
Modified: vmkit/trunk/include/j3/JavaAOTCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/JavaAOTCompiler.h?rev=145034&r1=145033&r2=145034&view=diff
==============================================================================
--- vmkit/trunk/include/j3/JavaAOTCompiler.h (original)
+++ vmkit/trunk/include/j3/JavaAOTCompiler.h Mon Nov 21 04:39:23 2011
@@ -10,7 +10,7 @@
#ifndef J3_AOT_COMPILER_H
#define J3_AOT_COMPILER_H
-#include "vmkit/MvmDenseMap.h"
+#include "vmkit/VmkitDenseMap.h"
#include "vmkit/UTF8.h"
#include "j3/JavaLLVMCompiler.h"
@@ -98,8 +98,8 @@
llvm::Constant* CreateConstantFromJavaObject(JavaObject* obj);
llvm::Constant* CreateConstantFromClassBytes(ClassBytes* bytes);
llvm::Constant* CreateConstantFromJavaConstantPool(JavaConstantPool* ctp);
- llvm::Constant* CreateConstantFromClassMap(const mvm::MvmDenseMap<const UTF8*, CommonClass*>& map);
- llvm::Constant* CreateConstantFromUTF8Map(const mvm::MvmDenseSet<mvm::UTF8MapKey, const UTF8*>& set);
+ llvm::Constant* CreateConstantFromClassMap(const mvm::VmkitDenseMap<const UTF8*, CommonClass*>& map);
+ llvm::Constant* CreateConstantFromUTF8Map(const mvm::VmkitDenseSet<mvm::UTF8MapKey, const UTF8*>& set);
void AddInitializerToClass(llvm::GlobalVariable* varGV, CommonClass* classDef);
llvm::Constant* getUTF8(const UTF8* val);
Removed: vmkit/trunk/include/vmkit/MvmDenseMap.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/MvmDenseMap.h?rev=145033&view=auto
==============================================================================
--- vmkit/trunk/include/vmkit/MvmDenseMap.h (original)
+++ vmkit/trunk/include/vmkit/MvmDenseMap.h (removed)
@@ -1,512 +0,0 @@
-//===- MvmDenseMap.h - Dense probed hash table ------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines the MvmDenseMap copied from llvm/ADT/DenseMap.h, but
-// without storing pairs.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef VMKIT_DENSEMAP_H
-#define VMKIT_DENSEMAP_H
-
-#include "llvm/Support/MathExtras.h"
-#include "llvm/Support/PointerLikeTypeTraits.h"
-#include "llvm/Support/type_traits.h"
-#include <algorithm>
-#include <iterator>
-#include <new>
-#include <utility>
-#include <cassert>
-#include <cstddef>
-#include <cstring>
-
-namespace mvm {
-
-template<typename T>
-struct MvmDenseMapInfo {
- //static inline T getEmptyKey();
- //static inline T getTombstoneKey();
- //static unsigned getHashValue(const T &Val);
- //static bool isEqual(const T &LHS, const T &RHS);
-};
-
-template<typename KeyT, typename ValueT,
- typename KeyInfoT = MvmDenseMapInfo<KeyT>,
- bool IsConst = false>
-class MvmDenseMapIterator;
-
-template<typename KeyT, typename ValueT>
-struct MvmPair {
- KeyT first;
- ValueT second;
-};
-
-template<typename KeyT, typename ValueT,
- typename KeyInfoT = MvmDenseMapInfo<KeyT> >
-class MvmDenseMap {
-public:
- typedef MvmPair<KeyT, ValueT> BucketT;
- uint32_t NumBuckets;
- BucketT *Buckets;
-
- uint32_t NumEntries;
- uint32_t NumTombstones;
- bool IsPrecompiled;
-
- typedef KeyT key_type;
- typedef ValueT mapped_type;
- typedef BucketT value_type;
-
- explicit MvmDenseMap(unsigned NumInitBuckets = 0) {
- IsPrecompiled = false;
- init(NumInitBuckets);
- }
-
- ~MvmDenseMap() {
- const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
- for (BucketT *P = Buckets, *E = Buckets+NumBuckets; P != E; ++P) {
- if (!KeyInfoT::isEqual(P->first, EmptyKey) &&
- !KeyInfoT::isEqual(P->first, TombstoneKey))
- P->second.~ValueT();
- P->first.~KeyT();
- }
-#ifndef NDEBUG
- if (NumBuckets)
- memset((void*)Buckets, 0x5a, sizeof(BucketT)*NumBuckets);
-#endif
- if (!IsPrecompiled) {
- operator delete(Buckets);
- }
- }
-
- typedef MvmDenseMapIterator<KeyT, ValueT, KeyInfoT> iterator;
- typedef MvmDenseMapIterator<KeyT, ValueT, KeyInfoT, true> const_iterator;
- inline iterator begin() {
- // When the map is empty, avoid the overhead of AdvancePastEmptyBuckets().
- return empty() ? end() : iterator(Buckets, Buckets+NumBuckets);
- }
- inline iterator end() {
- return iterator(Buckets+NumBuckets, Buckets+NumBuckets);
- }
- inline const_iterator begin() const {
- return empty() ? end() : const_iterator(Buckets, Buckets+NumBuckets);
- }
- inline const_iterator end() const {
- return const_iterator(Buckets+NumBuckets, Buckets+NumBuckets);
- }
-
- bool empty() const { return NumEntries == 0; }
- unsigned size() const { return NumEntries; }
-
- /// Grow the densemap so that it has at least Size buckets. Does not shrink
- void resize(size_t Size) {
- if (Size > NumBuckets)
- grow(Size);
- }
-
- void clear() {
- if (NumEntries == 0 && NumTombstones == 0) return;
-
- // If the capacity of the array is huge, and the # elements used is small,
- // shrink the array.
- if (NumEntries * 4 < NumBuckets && NumBuckets > 64) {
- shrink_and_clear();
- return;
- }
-
- const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
- for (BucketT *P = Buckets, *E = Buckets+NumBuckets; P != E; ++P) {
- if (!KeyInfoT::isEqual(P->first, EmptyKey)) {
- if (!KeyInfoT::isEqual(P->first, TombstoneKey)) {
- P->second.~ValueT();
- --NumEntries;
- }
- P->first = EmptyKey;
- }
- }
- assert(NumEntries == 0 && "Node count imbalance!");
- NumTombstones = 0;
- }
-
- /// count - Return true if the specified key is in the map.
- bool count(const KeyT &Val) const {
- BucketT *TheBucket;
- return LookupBucketFor(Val, TheBucket);
- }
-
- iterator find(const KeyT &Val) {
- BucketT *TheBucket;
- if (LookupBucketFor(Val, TheBucket))
- return iterator(TheBucket, Buckets+NumBuckets);
- return end();
- }
- const_iterator find(const KeyT &Val) const {
- BucketT *TheBucket;
- if (LookupBucketFor(Val, TheBucket))
- return const_iterator(TheBucket, Buckets+NumBuckets);
- return end();
- }
-
- /// lookup - Return the entry for the specified key, or a default
- /// constructed value if no such entry exists.
- ValueT lookup(const KeyT &Val) const {
- BucketT *TheBucket;
- if (LookupBucketFor(Val, TheBucket))
- return TheBucket->second;
- return ValueT();
- }
-
- // Inserts key,value pair into the map if the key isn't already in the map.
- // If the key is already in the map, it returns false and doesn't update the
- // value.
- std::pair<iterator, bool> insert(const std::pair<KeyT, ValueT> &KV) {
- BucketT *TheBucket;
- if (LookupBucketFor(KV.first, TheBucket))
- return std::make_pair(iterator(TheBucket, Buckets+NumBuckets),
- false); // Already in map.
-
- // Otherwise, insert the new element.
- TheBucket = InsertIntoBucket(KV.first, KV.second, TheBucket);
- return std::make_pair(iterator(TheBucket, Buckets+NumBuckets),
- true);
- }
-
- /// insert - Range insertion of pairs.
- template<typename InputIt>
- void insert(InputIt I, InputIt E) {
- for (; I != E; ++I)
- insert(*I);
- }
-
-
- bool erase(const KeyT &Val) {
- BucketT *TheBucket;
- if (!LookupBucketFor(Val, TheBucket))
- return false; // not in map.
-
- TheBucket->second.~ValueT();
- TheBucket->first = getTombstoneKey();
- --NumEntries;
- ++NumTombstones;
- return true;
- }
- void erase(iterator I) {
- BucketT *TheBucket = &*I;
- TheBucket->second.~ValueT();
- TheBucket->first = getTombstoneKey();
- --NumEntries;
- ++NumTombstones;
- }
-
- void swap(MvmDenseMap& RHS) {
- std::swap(NumBuckets, RHS.NumBuckets);
- std::swap(Buckets, RHS.Buckets);
- std::swap(NumEntries, RHS.NumEntries);
- std::swap(NumTombstones, RHS.NumTombstones);
- }
-
- value_type& FindAndConstruct(const KeyT &Key) {
- BucketT *TheBucket;
- if (LookupBucketFor(Key, TheBucket))
- return *TheBucket;
-
- return *InsertIntoBucket(Key, ValueT(), TheBucket);
- }
-
- ValueT &operator[](const KeyT &Key) {
- return FindAndConstruct(Key).second;
- }
-
- /// isPointerIntoBucketsArray - Return true if the specified pointer points
- /// somewhere into the MvmDenseMap's array of buckets (i.e. either to a key or
- /// value in the MvmDenseMap).
- bool isPointerIntoBucketsArray(const void *Ptr) const {
- return Ptr >= Buckets && Ptr < Buckets+NumBuckets;
- }
-
- /// getPointerIntoBucketsArray() - Return an opaque pointer into the buckets
- /// array. In conjunction with the previous method, this can be used to
- /// determine whether an insertion caused the MvmDenseMap to reallocate.
- const void *getPointerIntoBucketsArray() const { return Buckets; }
-
-private:
- BucketT *InsertIntoBucket(const KeyT &Key, const ValueT &Value,
- BucketT *TheBucket) {
- // If the load of the hash table is more than 3/4, or if fewer than 1/8 of
- // the buckets are empty (meaning that many are filled with tombstones),
- // grow the table.
- //
- // The later case is tricky. For example, if we had one empty bucket with
- // tons of tombstones, failing lookups (e.g. for insertion) would have to
- // probe almost the entire table until it found the empty bucket. If the
- // table completely filled with tombstones, no lookup would ever succeed,
- // causing infinite loops in lookup.
- ++NumEntries;
- if (NumEntries*4 >= NumBuckets*3) {
- this->grow(NumBuckets * 2);
- LookupBucketFor(Key, TheBucket);
- }
- if (NumBuckets-(NumEntries+NumTombstones) < NumBuckets/8) {
- this->grow(NumBuckets);
- LookupBucketFor(Key, TheBucket);
- }
-
- // If we are writing over a tombstone, remember this.
- if (!KeyInfoT::isEqual(TheBucket->first, getEmptyKey()))
- --NumTombstones;
-
- TheBucket->first = Key;
- new (&TheBucket->second) ValueT(Value);
- return TheBucket;
- }
-
- static unsigned getHashValue(const KeyT &Val) {
- return KeyInfoT::getHashValue(Val);
- }
- static const KeyT getEmptyKey() {
- return KeyInfoT::getEmptyKey();
- }
- static const KeyT getTombstoneKey() {
- return KeyInfoT::getTombstoneKey();
- }
-
- /// LookupBucketFor - Lookup the appropriate bucket for Val, returning it in
- /// FoundBucket. If the bucket contains the key and a value, this returns
- /// true, otherwise it returns a bucket with an empty marker or tombstone and
- /// returns false.
- bool LookupBucketFor(const KeyT &Val, BucketT *&FoundBucket) const {
- unsigned BucketNo = getHashValue(Val);
- unsigned ProbeAmt = 1;
- BucketT *BucketsPtr = Buckets;
-
- if (NumBuckets == 0) {
- FoundBucket = 0;
- return false;
- }
-
- // FoundTombstone - Keep track of whether we find a tombstone while probing.
- BucketT *FoundTombstone = 0;
- const KeyT EmptyKey = getEmptyKey();
- const KeyT TombstoneKey = getTombstoneKey();
- assert(!KeyInfoT::isEqual(Val, EmptyKey) &&
- !KeyInfoT::isEqual(Val, TombstoneKey) &&
- "Empty/Tombstone value shouldn't be inserted into map!");
-
- while (1) {
- BucketT *ThisBucket = BucketsPtr + (BucketNo & (NumBuckets-1));
- // Found Val's bucket? If so, return it.
- if (KeyInfoT::isEqual(ThisBucket->first, Val)) {
- FoundBucket = ThisBucket;
- return true;
- }
-
- // If we found an empty bucket, the key doesn't exist in the set.
- // Insert it and return the default value.
- if (KeyInfoT::isEqual(ThisBucket->first, EmptyKey)) {
- // If we've already seen a tombstone while probing, fill it in instead
- // of the empty bucket we eventually probed to.
- if (FoundTombstone) ThisBucket = FoundTombstone;
- FoundBucket = FoundTombstone ? FoundTombstone : ThisBucket;
- return false;
- }
-
- // If this is a tombstone, remember it. If Val ends up not in the map, we
- // prefer to return it than something that would require more probing.
- if (KeyInfoT::isEqual(ThisBucket->first, TombstoneKey) && !FoundTombstone)
- FoundTombstone = ThisBucket; // Remember the first tombstone found.
-
- // Otherwise, it's a hash collision or a tombstone, continue quadratic
- // probing.
- BucketNo += ProbeAmt++;
- }
- }
-
- void init(unsigned InitBuckets) {
- NumEntries = 0;
- NumTombstones = 0;
- NumBuckets = InitBuckets;
-
- if (InitBuckets == 0) {
- Buckets = 0;
- return;
- }
-
- assert(InitBuckets && (InitBuckets & (InitBuckets-1)) == 0 &&
- "# initial buckets must be a power of two!");
- Buckets = static_cast<BucketT*>(operator new(sizeof(BucketT)*InitBuckets));
- // Initialize all the keys to EmptyKey.
- const KeyT EmptyKey = getEmptyKey();
- for (unsigned i = 0; i != InitBuckets; ++i)
- new (&Buckets[i].first) KeyT(EmptyKey);
- }
-
- void grow(unsigned AtLeast) {
- unsigned OldNumBuckets = NumBuckets;
- BucketT *OldBuckets = Buckets;
-
- if (NumBuckets < 64)
- NumBuckets = 64;
-
- // Double the number of buckets.
- while (NumBuckets < AtLeast)
- NumBuckets <<= 1;
- NumTombstones = 0;
- Buckets = static_cast<BucketT*>(operator new(sizeof(BucketT)*NumBuckets));
-
- // Initialize all the keys to EmptyKey.
- const KeyT EmptyKey = getEmptyKey();
- for (unsigned i = 0, e = NumBuckets; i != e; ++i)
- new (&Buckets[i].first) KeyT(EmptyKey);
-
- // Insert all the old elements.
- const KeyT TombstoneKey = getTombstoneKey();
- for (BucketT *B = OldBuckets, *E = OldBuckets+OldNumBuckets; B != E; ++B) {
- if (!KeyInfoT::isEqual(B->first, EmptyKey) &&
- !KeyInfoT::isEqual(B->first, TombstoneKey)) {
- // Insert the key/value into the new table.
- BucketT *DestBucket;
- bool FoundVal = LookupBucketFor(B->first, DestBucket);
- (void)FoundVal; // silence warning.
- assert(!FoundVal && "Key already in new map?");
- DestBucket->first = B->first;
- new (&DestBucket->second) ValueT(B->second);
-
- // Free the value.
- B->second.~ValueT();
- }
- B->first.~KeyT();
- }
-
-#ifndef NDEBUG
- if (OldNumBuckets)
- memset((void*)OldBuckets, 0x5a, sizeof(BucketT)*OldNumBuckets);
-#endif
- // Free the old table.
- if (!IsPrecompiled) {
- operator delete(OldBuckets);
- } else {
- IsPrecompiled = false;
- }
- }
-
- void shrink_and_clear() {
- unsigned OldNumBuckets = NumBuckets;
- BucketT *OldBuckets = Buckets;
-
- // Reduce the number of buckets.
- NumBuckets = NumEntries > 32 ? 1 << (llvm::Log2_32_Ceil(NumEntries) + 1)
- : 64;
- NumTombstones = 0;
- Buckets = static_cast<BucketT*>(operator new(sizeof(BucketT)*NumBuckets));
-
- // Initialize all the keys to EmptyKey.
- const KeyT EmptyKey = getEmptyKey();
- for (unsigned i = 0, e = NumBuckets; i != e; ++i)
- new (&Buckets[i].first) KeyT(EmptyKey);
-
- // Free the old buckets.
- const KeyT TombstoneKey = getTombstoneKey();
- for (BucketT *B = OldBuckets, *E = OldBuckets+OldNumBuckets; B != E; ++B) {
- if (!KeyInfoT::isEqual(B->first, EmptyKey) &&
- !KeyInfoT::isEqual(B->first, TombstoneKey)) {
- // Free the value.
- B->second.~ValueT();
- }
- B->first.~KeyT();
- }
-
-#ifndef NDEBUG
- memset((void*)OldBuckets, 0x5a, sizeof(BucketT)*OldNumBuckets);
-#endif
- if (!IsPrecompiled) {
- // Free the old table.
- operator delete(OldBuckets);
- } else {
- IsPrecompiled = false;
- }
-
- NumEntries = 0;
- }
-
-public:
- /// Return the approximate size (in bytes) of the actual map.
- /// This is just the raw memory used by MvmDenseMap.
- /// If entries are pointers to objects, the size of the referenced objects
- /// are not included.
- size_t getMemorySize() const {
- return NumBuckets * sizeof(BucketT);
- }
-};
-
-template<typename KeyT, typename ValueT,
- typename KeyInfoT, bool IsConst>
-class MvmDenseMapIterator {
- typedef MvmPair<KeyT, ValueT> Bucket;
- typedef MvmDenseMapIterator<KeyT, ValueT, KeyInfoT, true> ConstIterator;
- friend class MvmDenseMapIterator<KeyT, ValueT, KeyInfoT, true>;
-public:
- typedef ptrdiff_t difference_type;
- typedef typename llvm::conditional<IsConst, const Bucket, Bucket>::type value_type;
- typedef value_type *pointer;
- typedef value_type &reference;
- typedef std::forward_iterator_tag iterator_category;
-private:
- pointer Ptr, End;
-public:
- MvmDenseMapIterator() : Ptr(0), End(0) {}
-
- MvmDenseMapIterator(pointer Pos, pointer E) : Ptr(Pos), End(E) {
- AdvancePastEmptyBuckets();
- }
-
- // If IsConst is true this is a converting constructor from iterator to
- // const_iterator and the default copy constructor is used.
- // Otherwise this is a copy constructor for iterator.
- MvmDenseMapIterator(const MvmDenseMapIterator<KeyT, ValueT,
- KeyInfoT, false>& I)
- : Ptr(I.Ptr), End(I.End) {}
-
- reference operator*() const {
- return *Ptr;
- }
- pointer operator->() const {
- return Ptr;
- }
-
- bool operator==(const ConstIterator &RHS) const {
- return Ptr == RHS.operator->();
- }
- bool operator!=(const ConstIterator &RHS) const {
- return Ptr != RHS.operator->();
- }
-
- inline MvmDenseMapIterator& operator++() { // Preincrement
- ++Ptr;
- AdvancePastEmptyBuckets();
- return *this;
- }
- MvmDenseMapIterator operator++(int) { // Postincrement
- MvmDenseMapIterator tmp = *this; ++*this; return tmp;
- }
-
-private:
- void AdvancePastEmptyBuckets() {
- const KeyT Empty = KeyInfoT::getEmptyKey();
- const KeyT Tombstone = KeyInfoT::getTombstoneKey();
-
- while (Ptr != End &&
- (KeyInfoT::isEqual(Ptr->first, Empty) ||
- KeyInfoT::isEqual(Ptr->first, Tombstone)))
- ++Ptr;
- }
-};
-
-} // end namespace j3
-
-#endif
Removed: vmkit/trunk/include/vmkit/MvmDenseSet.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/MvmDenseSet.h?rev=145033&view=auto
==============================================================================
--- vmkit/trunk/include/vmkit/MvmDenseSet.h (original)
+++ vmkit/trunk/include/vmkit/MvmDenseSet.h (removed)
@@ -1,491 +0,0 @@
-//===- MvmDenseSet.h - Dense probed hash set --------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines the MvmDenseSet class copied from llvm/ADT/DenseMap.h, but
-// without storing pairs.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef VMKIT_DENSESET_H
-#define VMKIT_DENSESET_H
-
-#include "llvm/ADT/DenseMapInfo.h"
-#include "llvm/Support/MathExtras.h"
-#include "llvm/Support/PointerLikeTypeTraits.h"
-#include "llvm/Support/type_traits.h"
-#include <algorithm>
-#include <iterator>
-#include <new>
-#include <utility>
-#include <cassert>
-#include <cstddef>
-#include <cstring>
-
-namespace mvm {
-
-template<typename ValueT,
- typename ValueInfoT = MvmDenseMapInfo<ValueT>,
- bool IsConst = false>
-class MvmDenseSetIterator;
-
-template<typename KeyT, typename ValueT,
- typename KeyInfoT = MvmDenseMapInfo<KeyT>,
- typename ValueInfoT = MvmDenseMapInfo<ValueT> >
-class MvmDenseSet {
-public:
- typedef ValueT BucketT;
- uint32_t NumBuckets;
- BucketT *Buckets;
-
- uint32_t NumEntries;
- uint32_t NumTombstones;
- bool IsPrecompiled;
-
- typedef KeyT key_type;
- typedef ValueT mapped_type;
- typedef BucketT value_type;
-
- explicit MvmDenseSet(unsigned NumInitBuckets = 0) {
- IsPrecompiled = false;
- init(NumInitBuckets);
- }
-
- ~MvmDenseSet() {
- const ValueT EmptyValue = getEmptyValue(), TombstoneValue = getTombstoneValue();
- for (BucketT *P = Buckets, *E = Buckets+NumBuckets; P != E; ++P) {
- if (!ValueInfoT::isEqual(*P, EmptyValue) &&
- !ValueInfoT::isEqual(*P, TombstoneValue))
- (*P).~ValueT();
- }
-#ifndef NDEBUG
- if (NumBuckets)
- memset((void*)Buckets, 0x5a, sizeof(BucketT)*NumBuckets);
-#endif
- if (!IsPrecompiled) {
- operator delete(Buckets);
- }
- }
-
- typedef MvmDenseSetIterator<ValueT, ValueInfoT> iterator;
- typedef MvmDenseSetIterator<ValueT, ValueInfoT, true> const_iterator;
- inline iterator begin() {
- // When the map is empty, avoid the overhead of AdvancePastEmptyBuckets().
- return empty() ? end() : iterator(Buckets, Buckets+NumBuckets);
- }
- inline iterator end() {
- return iterator(Buckets+NumBuckets, Buckets+NumBuckets);
- }
- inline const_iterator begin() const {
- return empty() ? end() : const_iterator(Buckets, Buckets+NumBuckets);
- }
- inline const_iterator end() const {
- return const_iterator(Buckets+NumBuckets, Buckets+NumBuckets);
- }
-
- bool empty() const { return NumEntries == 0; }
- unsigned size() const { return NumEntries; }
-
- /// Grow the denseset so that it has at least Size buckets. Does not shrink
- void resize(size_t Size) {
- if (Size > NumBuckets)
- grow(Size);
- }
-
- void clear() {
- if (NumEntries == 0 && NumTombstones == 0) return;
-
- // If the capacity of the array is huge, and the # elements used is small,
- // shrink the array.
- if (NumEntries * 4 < NumBuckets && NumBuckets > 64) {
- shrink_and_clear();
- return;
- }
-
- const ValueT EmptyValue = getEmptyValue(), TombstoneValue = getTombstoneValue();
- for (BucketT *P = Buckets, *E = Buckets+NumBuckets; P != E; ++P) {
- if (!ValueInfoT::isEqual(*P, EmptyValue)) {
- if (!ValueInfoT::isEqual(*P, TombstoneValue)) {
- P->~ValueT();
- --NumEntries;
- }
- *P = EmptyValue;
- }
- }
- assert(NumEntries == 0 && "Node count imbalance!");
- NumTombstones = 0;
- }
-
- /// count - Return true if the specified key is in the set.
- bool count(const KeyT &Val) const {
- BucketT *TheBucket;
- return LookupBucketFor(Val, TheBucket);
- }
-
- iterator find(const KeyT &Val) {
- BucketT *TheBucket;
- if (LookupBucketFor(Val, TheBucket))
- return iterator(TheBucket, Buckets+NumBuckets);
- return end();
- }
- const_iterator find(const KeyT &Val) const {
- BucketT *TheBucket;
- if (LookupBucketFor(Val, TheBucket))
- return const_iterator(TheBucket, Buckets+NumBuckets);
- return end();
- }
-
- /// lookup - Return the entry for the specified key, or a default
- /// constructed value if no such entry exists.
- ValueT lookup(const KeyT &Val) const {
- BucketT *TheBucket;
- if (LookupBucketFor(Val, TheBucket))
- return *TheBucket;
- return ValueT();
- }
-
- // Inserts key,value pair into the map if the key isn't already in the map.
- // If the key is already in the map, it returns false and doesn't update the
- // value.
- std::pair<iterator, bool> insert(const std::pair<KeyT, ValueT> &KV) {
- BucketT *TheBucket;
- if (LookupBucketFor(KV.first, TheBucket))
- return std::make_pair(iterator(TheBucket, Buckets+NumBuckets),
- false); // Already in map.
-
- // Otherwise, insert the new element.
- TheBucket = InsertIntoBucket(KV.first, KV.second, TheBucket);
- return std::make_pair(iterator(TheBucket, Buckets+NumBuckets),
- true);
- }
-
- /// insert - Range insertion of pairs.
- template<typename InputIt>
- void insert(InputIt I, InputIt E) {
- for (; I != E; ++I)
- insert(*I);
- }
-
-
- bool erase(const KeyT &Val) {
- BucketT *TheBucket;
- if (!LookupBucketFor(Val, TheBucket))
- return false; // not in map.
-
- (*TheBucket).~ValueT();
- *TheBucket = getTombstoneValue();
- --NumEntries;
- ++NumTombstones;
- return true;
- }
- void erase(iterator I) {
- BucketT *TheBucket = &*I;
- (*TheBucket).~ValueT();
- *TheBucket = getTombstoneValue();
- --NumEntries;
- ++NumTombstones;
- }
-
- void swap(MvmDenseSet& RHS) {
- std::swap(NumBuckets, RHS.NumBuckets);
- std::swap(Buckets, RHS.Buckets);
- std::swap(NumEntries, RHS.NumEntries);
- std::swap(NumTombstones, RHS.NumTombstones);
- }
-
- value_type& FindAndConstruct(const KeyT &Key) {
- BucketT *TheBucket;
- if (LookupBucketFor(Key, TheBucket))
- return *TheBucket;
-
- return *InsertIntoBucket(Key, ValueT(), TheBucket);
- }
-
- ValueT &operator[](const KeyT &Key) {
- return FindAndConstruct(Key);
- }
-
- /// isPointerIntoBucketsArray - Return true if the specified pointer points
- /// somewhere into the MvmDenseSet's array of buckets.
- bool isPointerIntoBucketsArray(const void *Ptr) const {
- return Ptr >= Buckets && Ptr < Buckets+NumBuckets;
- }
-
- /// getPointerIntoBucketsArray() - Return an opaque pointer into the buckets
- /// array. In conjunction with the previous method, this can be used to
- /// determine whether an insertion caused the MvmDenseSet to reallocate.
- const void *getPointerIntoBucketsArray() const { return Buckets; }
-
-private:
- BucketT *InsertIntoBucket(const KeyT &Key, const ValueT &Value,
- BucketT *TheBucket) {
- // If the load of the hash table is more than 3/4, or if fewer than 1/8 of
- // the buckets are empty (meaning that many are filled with tombstones),
- // grow the table.
- //
- // The later case is tricky. For example, if we had one empty bucket with
- // tons of tombstones, failing lookups (e.g. for insertion) would have to
- // probe almost the entire table until it found the empty bucket. If the
- // table completely filled with tombstones, no lookup would ever succeed,
- // causing infinite loops in lookup.
- ++NumEntries;
- if (NumEntries*4 >= NumBuckets*3) {
- this->grow(NumBuckets * 2);
- LookupBucketFor(Key, TheBucket);
- }
- if (NumBuckets-(NumEntries+NumTombstones) < NumBuckets/8) {
- this->grow(NumBuckets);
- LookupBucketFor(Key, TheBucket);
- }
-
- // If we are writing over a tombstone, remember this.
- if (!ValueInfoT::isEqual(*TheBucket, getEmptyValue()))
- --NumTombstones;
-
- new (TheBucket) ValueT(Value);
- return TheBucket;
- }
-
- static unsigned getHashValue(const KeyT &Val) {
- return KeyInfoT::getHashValue(Val);
- }
- static const ValueT getEmptyValue() {
- return ValueInfoT::getEmptyKey();
- }
- static const ValueT getTombstoneValue() {
- return ValueInfoT::getTombstoneKey();
- }
-
- /// LookupBucketFor - Lookup the appropriate bucket for Val, returning it in
- /// FoundBucket. If the bucket contains the key and a value, this returns
- /// true, otherwise it returns a bucket with an empty marker or tombstone and
- /// returns false.
- bool LookupBucketFor(const KeyT &Key, BucketT *&FoundBucket) const {
- unsigned BucketNo = getHashValue(Key);
- unsigned ProbeAmt = 1;
- BucketT *BucketsPtr = Buckets;
-
- if (NumBuckets == 0) {
- FoundBucket = 0;
- return false;
- }
-
- // FoundTombstone - Keep track of whether we find a tombstone while probing.
- BucketT *FoundTombstone = 0;
- const ValueT EmptyValue = getEmptyValue();
- const ValueT TombstoneValue = getTombstoneValue();
-
- while (1) {
- BucketT *ThisBucket = BucketsPtr + (BucketNo & (NumBuckets-1));
- // Found Val's bucket? If so, return it.
- if (ValueInfoT::isEqualKey(*ThisBucket, Key)) {
- FoundBucket = ThisBucket;
- return true;
- }
-
- // If we found an empty bucket, the key doesn't exist in the set.
- // Insert it and return the default value.
- if (ValueInfoT::isEqual(*ThisBucket, EmptyValue)) {
- // If we've already seen a tombstone while probing, fill it in instead
- // of the empty bucket we eventually probed to.
- if (FoundTombstone) ThisBucket = FoundTombstone;
- FoundBucket = FoundTombstone ? FoundTombstone : ThisBucket;
- return false;
- }
-
- // If this is a tombstone, remember it. If Val ends up not in the map, we
- // prefer to return it than something that would require more probing.
- if (ValueInfoT::isEqual(*ThisBucket, TombstoneValue) && !FoundTombstone)
- FoundTombstone = ThisBucket; // Remember the first tombstone found.
-
- // Otherwise, it's a hash collision or a tombstone, continue quadratic
- // probing.
- BucketNo += ProbeAmt++;
- }
- }
-
- void init(unsigned InitBuckets) {
- NumEntries = 0;
- NumTombstones = 0;
- NumBuckets = InitBuckets;
-
- if (InitBuckets == 0) {
- Buckets = 0;
- return;
- }
-
- assert(InitBuckets && (InitBuckets & (InitBuckets-1)) == 0 &&
- "# initial buckets must be a power of two!");
- Buckets = static_cast<BucketT*>(operator new(sizeof(BucketT)*InitBuckets));
- // Initialize all the entries to EmptyValue.
- const ValueT EmptyValue = getEmptyValue();
- for (unsigned i = 0; i != InitBuckets; ++i)
- new (&Buckets[i]) ValueT(EmptyValue);
- }
-
- void grow(unsigned AtLeast) {
- unsigned OldNumBuckets = NumBuckets;
- BucketT *OldBuckets = Buckets;
-
- if (NumBuckets < 64)
- NumBuckets = 64;
-
- // Double the number of buckets.
- while (NumBuckets < AtLeast)
- NumBuckets <<= 1;
- NumTombstones = 0;
- Buckets = static_cast<BucketT*>(operator new(sizeof(BucketT)*NumBuckets));
-
- // Initialize all the values to EmptyValue.
- const ValueT EmptyValue = getEmptyValue();
- for (unsigned i = 0, e = NumBuckets; i != e; ++i)
- new (&Buckets[i]) ValueT(EmptyValue);
-
- // Insert all the old elements.
- const ValueT TombstoneValue = getTombstoneValue();
- for (BucketT *B = OldBuckets, *E = OldBuckets+OldNumBuckets; B != E; ++B) {
- if (!ValueInfoT::isEqual(*B, EmptyValue) &&
- !ValueInfoT::isEqual(*B, TombstoneValue)) {
- // Insert the value into the new table.
- BucketT *DestBucket;
- KeyT key = ValueInfoT::toKey(*B);
- bool FoundVal = LookupBucketFor(key, DestBucket);
- (void)FoundVal; // silence warning.
- assert(!FoundVal && "Key already in new map?");
- new (DestBucket) ValueT(*B);
-
- // Free the value.
- (*B).~ValueT();
- }
- }
-
-#ifndef NDEBUG
- if (OldNumBuckets)
- memset((void*)OldBuckets, 0x5a, sizeof(BucketT)*OldNumBuckets);
-#endif
- // Free the old table.
- if (!IsPrecompiled) {
- operator delete(OldBuckets);
- } else {
- IsPrecompiled = false;
- }
- }
-
- void shrink_and_clear() {
- unsigned OldNumBuckets = NumBuckets;
- BucketT *OldBuckets = Buckets;
-
- // Reduce the number of buckets.
- NumBuckets = NumEntries > 32 ? 1 << (llvm::Log2_32_Ceil(NumEntries) + 1)
- : 64;
- NumTombstones = 0;
- Buckets = static_cast<BucketT*>(operator new(sizeof(BucketT)*NumBuckets));
-
- // Initialize all the entries to EmptyValue.
- const ValueT EmptyValue = getEmptyValue();
- for (unsigned i = 0, e = NumBuckets; i != e; ++i)
- new (&Buckets[i]) ValueT(EmptyValue);
-
- // Free the old buckets.
- const ValueT TombstoneValue = getTombstoneValue();
- for (BucketT *B = OldBuckets, *E = OldBuckets+OldNumBuckets; B != E; ++B) {
- if (!ValueInfoT::isEqual(*B, EmptyValue) &&
- !ValueInfoT::isEqual(*B, TombstoneValue)) {
- // Free the value.
- (*B).~ValueT();
- }
- }
-
-#ifndef NDEBUG
- memset((void*)OldBuckets, 0x5a, sizeof(BucketT)*OldNumBuckets);
-#endif
- if (!IsPrecompiled) {
- // Free the old table.
- operator delete(OldBuckets);
- } else {
- IsPrecompiled = false;
- }
-
- NumEntries = 0;
- }
-
-public:
- /// Return the approximate size (in bytes) of the actual map.
- /// This is just the raw memory used by MvmDenseSet.
- /// If entries are pointers to objects, the size of the referenced objects
- /// are not included.
- size_t getMemorySize() const {
- return NumBuckets * sizeof(BucketT);
- }
-};
-
-template<typename ValueT,
- typename ValueInfoT, bool IsConst>
-class MvmDenseSetIterator {
- typedef ValueT Bucket;
- typedef MvmDenseSetIterator<ValueT, ValueInfoT, true> ConstIterator;
- friend class MvmDenseSetIterator<ValueT, ValueInfoT, true>;
-public:
- typedef ptrdiff_t difference_type;
- typedef typename llvm::conditional<IsConst, const Bucket, Bucket>::type value_type;
- typedef value_type *pointer;
- typedef value_type &reference;
- typedef std::forward_iterator_tag iterator_category;
-private:
- pointer Ptr, End;
-public:
- MvmDenseSetIterator() : Ptr(0), End(0) {}
-
- MvmDenseSetIterator(pointer Pos, pointer E) : Ptr(Pos), End(E) {
- AdvancePastEmptyBuckets();
- }
-
- // If IsConst is true this is a converting constructor from iterator to
- // const_iterator and the default copy constructor is used.
- // Otherwise this is a copy constructor for iterator.
- MvmDenseSetIterator(const MvmDenseSetIterator<ValueT, ValueInfoT, false>& I)
- : Ptr(I.Ptr), End(I.End) {}
-
- reference operator*() const {
- return *Ptr;
- }
- pointer operator->() const {
- return Ptr;
- }
-
- bool operator==(const ConstIterator &RHS) const {
- return Ptr == RHS.operator->();
- }
- bool operator!=(const ConstIterator &RHS) const {
- return Ptr != RHS.operator->();
- }
-
- inline MvmDenseSetIterator& operator++() { // Preincrement
- ++Ptr;
- AdvancePastEmptyBuckets();
- return *this;
- }
- MvmDenseSetIterator operator++(int) { // Postincrement
- MvmDenseSetIterator tmp = *this; ++*this; return tmp;
- }
-
-private:
- void AdvancePastEmptyBuckets() {
- const ValueT Empty = ValueInfoT::getEmptyKey();
- const ValueT Tombstone = ValueInfoT::getTombstoneKey();
-
- while (Ptr != End &&
- (ValueInfoT::isEqual(*Ptr, Empty) ||
- ValueInfoT::isEqual(*Ptr, Tombstone)))
- ++Ptr;
- }
-};
-
-} // end namespace mvm
-
-#endif
Modified: vmkit/trunk/include/vmkit/System.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/System.h?rev=145034&r1=145033&r2=145034&view=diff
==============================================================================
--- vmkit/trunk/include/vmkit/System.h (original)
+++ vmkit/trunk/include/vmkit/System.h Mon Nov 21 04:39:23 2011
@@ -64,11 +64,11 @@
#if ARCH_X64
const word_t kThreadStart = 0x0000000110000000LL;
const word_t kThreadIDMask = 0xFFFFFFFFFFF00000LL;
-const word_t kMvmThreadMask = 0xFFFFFFFFF0000000LL;
+const word_t kVmkitThreadMask = 0xFFFFFFFFF0000000LL;
#else
const word_t kThreadStart = 0x10000000;
const word_t kThreadIDMask = 0x7FF00000;
-const word_t kMvmThreadMask = 0xF0000000;
+const word_t kVmkitThreadMask = 0xF0000000;
#endif
#if MACOS_OS
@@ -135,8 +135,8 @@
}
// Apply this mask to verify that the current thread was created by Mvm.
- static word_t GetMvmThreadMask() {
- return kMvmThreadMask;
+ static word_t GetVmkitThreadMask() {
+ return kVmkitThreadMask;
}
// Get the memory start of thread stack addresses.
Modified: vmkit/trunk/include/vmkit/Thread.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/Thread.h?rev=145034&r1=145033&r2=145034&view=diff
==============================================================================
--- vmkit/trunk/include/vmkit/Thread.h (original)
+++ vmkit/trunk/include/vmkit/Thread.h Mon Nov 21 04:39:23 2011
@@ -219,9 +219,9 @@
internalClearException();
}
- bool isMvmThread() {
+ bool isVmkitThread() {
if (!baseAddr) return false;
- else return (((word_t)this) & System::GetMvmThreadMask()) == baseAddr;
+ else return (((word_t)this) & System::GetVmkitThreadMask()) == baseAddr;
}
/// baseAddr - The base address for all threads.
Modified: vmkit/trunk/include/vmkit/UTF8.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/UTF8.h?rev=145034&r1=145033&r2=145034&view=diff
==============================================================================
--- vmkit/trunk/include/vmkit/UTF8.h (original)
+++ vmkit/trunk/include/vmkit/UTF8.h Mon Nov 21 04:39:23 2011
@@ -3,8 +3,8 @@
#include <map>
#include "vmkit/Allocator.h"
-#include "vmkit/MvmDenseMap.h"
-#include "vmkit/MvmDenseSet.h"
+#include "vmkit/VmkitDenseMap.h"
+#include "vmkit/VmkitDenseSet.h"
namespace mvm {
@@ -76,9 +76,9 @@
}
};
-// Provide MvmDenseMapInfo for UTF8.
+// Provide VmkitDenseMapInfo for UTF8.
template<>
-struct MvmDenseMapInfo<const UTF8*> {
+struct VmkitDenseMapInfo<const UTF8*> {
static inline const UTF8* getEmptyKey() {
return &EmptyKey;
}
@@ -98,9 +98,9 @@
};
-// Provide MvmDenseMapInfo for UTF8MapKey.
+// Provide VmkitDenseMapInfo for UTF8MapKey.
template<>
-struct MvmDenseMapInfo<UTF8MapKey> {
+struct VmkitDenseMapInfo<UTF8MapKey> {
static inline const UTF8MapKey getEmptyKey() {
static UTF8MapKey EmptyKey(NULL, -1);
return EmptyKey;
@@ -121,11 +121,11 @@
class UTF8Map : public mvm::PermanentObject {
public:
- typedef MvmDenseSet<UTF8MapKey, const UTF8*>::iterator iterator;
+ typedef VmkitDenseSet<UTF8MapKey, const UTF8*>::iterator iterator;
LockNormal lock;
BumpPtrAllocator& allocator;
- MvmDenseSet<UTF8MapKey, const UTF8*> map;
+ VmkitDenseSet<UTF8MapKey, const UTF8*> map;
const UTF8* lookupOrCreateAsciiz(const char* asciiz);
const UTF8* lookupOrCreateReader(const uint16* buf, uint32 size);
@@ -133,7 +133,7 @@
const UTF8* lookupReader(const uint16* buf, uint32 size);
UTF8Map(BumpPtrAllocator& A) : allocator(A) {}
- UTF8Map(BumpPtrAllocator& A, MvmDenseSet<UTF8MapKey, const UTF8*>* m)
+ UTF8Map(BumpPtrAllocator& A, VmkitDenseSet<UTF8MapKey, const UTF8*>* m)
: allocator(A), map(*m) {}
~UTF8Map() {
Copied: vmkit/trunk/include/vmkit/VmkitDenseMap.h (from r145031, vmkit/trunk/include/vmkit/MvmDenseMap.h)
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/VmkitDenseMap.h?p2=vmkit/trunk/include/vmkit/VmkitDenseMap.h&p1=vmkit/trunk/include/vmkit/MvmDenseMap.h&r1=145031&r2=145034&rev=145034&view=diff
==============================================================================
--- vmkit/trunk/include/vmkit/MvmDenseMap.h (original)
+++ vmkit/trunk/include/vmkit/VmkitDenseMap.h Mon Nov 21 04:39:23 2011
@@ -1,4 +1,4 @@
-//===- MvmDenseMap.h - Dense probed hash table ------------------*- C++ -*-===//
+//===- VmkitDenseMap.h - Dense probed hash table ------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
@@ -7,7 +7,7 @@
//
//===----------------------------------------------------------------------===//
//
-// This file defines the MvmDenseMap copied from llvm/ADT/DenseMap.h, but
+// This file defines the VmkitDenseMap copied from llvm/ADT/DenseMap.h, but
// without storing pairs.
//
//===----------------------------------------------------------------------===//
@@ -29,7 +29,7 @@
namespace mvm {
template<typename T>
-struct MvmDenseMapInfo {
+struct VmkitDenseMapInfo {
//static inline T getEmptyKey();
//static inline T getTombstoneKey();
//static unsigned getHashValue(const T &Val);
@@ -37,21 +37,21 @@
};
template<typename KeyT, typename ValueT,
- typename KeyInfoT = MvmDenseMapInfo<KeyT>,
+ typename KeyInfoT = VmkitDenseMapInfo<KeyT>,
bool IsConst = false>
-class MvmDenseMapIterator;
+class VmkitDenseMapIterator;
template<typename KeyT, typename ValueT>
-struct MvmPair {
+struct VmkitPair {
KeyT first;
ValueT second;
};
template<typename KeyT, typename ValueT,
- typename KeyInfoT = MvmDenseMapInfo<KeyT> >
-class MvmDenseMap {
+ typename KeyInfoT = VmkitDenseMapInfo<KeyT> >
+class VmkitDenseMap {
public:
- typedef MvmPair<KeyT, ValueT> BucketT;
+ typedef VmkitPair<KeyT, ValueT> BucketT;
uint32_t NumBuckets;
BucketT *Buckets;
@@ -63,12 +63,12 @@
typedef ValueT mapped_type;
typedef BucketT value_type;
- explicit MvmDenseMap(unsigned NumInitBuckets = 0) {
+ explicit VmkitDenseMap(unsigned NumInitBuckets = 0) {
IsPrecompiled = false;
init(NumInitBuckets);
}
- ~MvmDenseMap() {
+ ~VmkitDenseMap() {
const KeyT EmptyKey = getEmptyKey(), TombstoneKey = getTombstoneKey();
for (BucketT *P = Buckets, *E = Buckets+NumBuckets; P != E; ++P) {
if (!KeyInfoT::isEqual(P->first, EmptyKey) &&
@@ -85,8 +85,8 @@
}
}
- typedef MvmDenseMapIterator<KeyT, ValueT, KeyInfoT> iterator;
- typedef MvmDenseMapIterator<KeyT, ValueT, KeyInfoT, true> const_iterator;
+ typedef VmkitDenseMapIterator<KeyT, ValueT, KeyInfoT> iterator;
+ typedef VmkitDenseMapIterator<KeyT, ValueT, KeyInfoT, true> const_iterator;
inline iterator begin() {
// When the map is empty, avoid the overhead of AdvancePastEmptyBuckets().
return empty() ? end() : iterator(Buckets, Buckets+NumBuckets);
@@ -204,7 +204,7 @@
++NumTombstones;
}
- void swap(MvmDenseMap& RHS) {
+ void swap(VmkitDenseMap& RHS) {
std::swap(NumBuckets, RHS.NumBuckets);
std::swap(Buckets, RHS.Buckets);
std::swap(NumEntries, RHS.NumEntries);
@@ -224,15 +224,15 @@
}
/// isPointerIntoBucketsArray - Return true if the specified pointer points
- /// somewhere into the MvmDenseMap's array of buckets (i.e. either to a key or
- /// value in the MvmDenseMap).
+ /// somewhere into the VmkitDenseMap's array of buckets (i.e. either to a key or
+ /// value in the VmkitDenseMap).
bool isPointerIntoBucketsArray(const void *Ptr) const {
return Ptr >= Buckets && Ptr < Buckets+NumBuckets;
}
/// getPointerIntoBucketsArray() - Return an opaque pointer into the buckets
/// array. In conjunction with the previous method, this can be used to
- /// determine whether an insertion caused the MvmDenseMap to reallocate.
+ /// determine whether an insertion caused the VmkitDenseMap to reallocate.
const void *getPointerIntoBucketsArray() const { return Buckets; }
private:
@@ -436,7 +436,7 @@
public:
/// Return the approximate size (in bytes) of the actual map.
- /// This is just the raw memory used by MvmDenseMap.
+ /// This is just the raw memory used by VmkitDenseMap.
/// If entries are pointers to objects, the size of the referenced objects
/// are not included.
size_t getMemorySize() const {
@@ -446,10 +446,10 @@
template<typename KeyT, typename ValueT,
typename KeyInfoT, bool IsConst>
-class MvmDenseMapIterator {
- typedef MvmPair<KeyT, ValueT> Bucket;
- typedef MvmDenseMapIterator<KeyT, ValueT, KeyInfoT, true> ConstIterator;
- friend class MvmDenseMapIterator<KeyT, ValueT, KeyInfoT, true>;
+class VmkitDenseMapIterator {
+ typedef VmkitPair<KeyT, ValueT> Bucket;
+ typedef VmkitDenseMapIterator<KeyT, ValueT, KeyInfoT, true> ConstIterator;
+ friend class VmkitDenseMapIterator<KeyT, ValueT, KeyInfoT, true>;
public:
typedef ptrdiff_t difference_type;
typedef typename llvm::conditional<IsConst, const Bucket, Bucket>::type value_type;
@@ -459,16 +459,16 @@
private:
pointer Ptr, End;
public:
- MvmDenseMapIterator() : Ptr(0), End(0) {}
+ VmkitDenseMapIterator() : Ptr(0), End(0) {}
- MvmDenseMapIterator(pointer Pos, pointer E) : Ptr(Pos), End(E) {
+ VmkitDenseMapIterator(pointer Pos, pointer E) : Ptr(Pos), End(E) {
AdvancePastEmptyBuckets();
}
// If IsConst is true this is a converting constructor from iterator to
// const_iterator and the default copy constructor is used.
// Otherwise this is a copy constructor for iterator.
- MvmDenseMapIterator(const MvmDenseMapIterator<KeyT, ValueT,
+ VmkitDenseMapIterator(const VmkitDenseMapIterator<KeyT, ValueT,
KeyInfoT, false>& I)
: Ptr(I.Ptr), End(I.End) {}
@@ -486,13 +486,13 @@
return Ptr != RHS.operator->();
}
- inline MvmDenseMapIterator& operator++() { // Preincrement
+ inline VmkitDenseMapIterator& operator++() { // Preincrement
++Ptr;
AdvancePastEmptyBuckets();
return *this;
}
- MvmDenseMapIterator operator++(int) { // Postincrement
- MvmDenseMapIterator tmp = *this; ++*this; return tmp;
+ VmkitDenseMapIterator operator++(int) { // Postincrement
+ VmkitDenseMapIterator tmp = *this; ++*this; return tmp;
}
private:
Copied: vmkit/trunk/include/vmkit/VmkitDenseSet.h (from r145031, vmkit/trunk/include/vmkit/MvmDenseSet.h)
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/vmkit/VmkitDenseSet.h?p2=vmkit/trunk/include/vmkit/VmkitDenseSet.h&p1=vmkit/trunk/include/vmkit/MvmDenseSet.h&r1=145031&r2=145034&rev=145034&view=diff
==============================================================================
--- vmkit/trunk/include/vmkit/MvmDenseSet.h (original)
+++ vmkit/trunk/include/vmkit/VmkitDenseSet.h Mon Nov 21 04:39:23 2011
@@ -1,4 +1,4 @@
-//===- MvmDenseSet.h - Dense probed hash set --------------------*- C++ -*-===//
+//===- VmkitDenseSet.h - Dense probed hash set --------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
@@ -7,7 +7,7 @@
//
//===----------------------------------------------------------------------===//
//
-// This file defines the MvmDenseSet class copied from llvm/ADT/DenseMap.h, but
+// This file defines the VmkitDenseSet class copied from llvm/ADT/DenseMap.h, but
// without storing pairs.
//
//===----------------------------------------------------------------------===//
@@ -30,14 +30,14 @@
namespace mvm {
template<typename ValueT,
- typename ValueInfoT = MvmDenseMapInfo<ValueT>,
+ typename ValueInfoT = VmkitDenseMapInfo<ValueT>,
bool IsConst = false>
-class MvmDenseSetIterator;
+class VmkitDenseSetIterator;
template<typename KeyT, typename ValueT,
- typename KeyInfoT = MvmDenseMapInfo<KeyT>,
- typename ValueInfoT = MvmDenseMapInfo<ValueT> >
-class MvmDenseSet {
+ typename KeyInfoT = VmkitDenseMapInfo<KeyT>,
+ typename ValueInfoT = VmkitDenseMapInfo<ValueT> >
+class VmkitDenseSet {
public:
typedef ValueT BucketT;
uint32_t NumBuckets;
@@ -51,12 +51,12 @@
typedef ValueT mapped_type;
typedef BucketT value_type;
- explicit MvmDenseSet(unsigned NumInitBuckets = 0) {
+ explicit VmkitDenseSet(unsigned NumInitBuckets = 0) {
IsPrecompiled = false;
init(NumInitBuckets);
}
- ~MvmDenseSet() {
+ ~VmkitDenseSet() {
const ValueT EmptyValue = getEmptyValue(), TombstoneValue = getTombstoneValue();
for (BucketT *P = Buckets, *E = Buckets+NumBuckets; P != E; ++P) {
if (!ValueInfoT::isEqual(*P, EmptyValue) &&
@@ -72,8 +72,8 @@
}
}
- typedef MvmDenseSetIterator<ValueT, ValueInfoT> iterator;
- typedef MvmDenseSetIterator<ValueT, ValueInfoT, true> const_iterator;
+ typedef VmkitDenseSetIterator<ValueT, ValueInfoT> iterator;
+ typedef VmkitDenseSetIterator<ValueT, ValueInfoT, true> const_iterator;
inline iterator begin() {
// When the map is empty, avoid the overhead of AdvancePastEmptyBuckets().
return empty() ? end() : iterator(Buckets, Buckets+NumBuckets);
@@ -191,7 +191,7 @@
++NumTombstones;
}
- void swap(MvmDenseSet& RHS) {
+ void swap(VmkitDenseSet& RHS) {
std::swap(NumBuckets, RHS.NumBuckets);
std::swap(Buckets, RHS.Buckets);
std::swap(NumEntries, RHS.NumEntries);
@@ -211,14 +211,14 @@
}
/// isPointerIntoBucketsArray - Return true if the specified pointer points
- /// somewhere into the MvmDenseSet's array of buckets.
+ /// somewhere into the VmkitDenseSet's array of buckets.
bool isPointerIntoBucketsArray(const void *Ptr) const {
return Ptr >= Buckets && Ptr < Buckets+NumBuckets;
}
/// getPointerIntoBucketsArray() - Return an opaque pointer into the buckets
/// array. In conjunction with the previous method, this can be used to
- /// determine whether an insertion caused the MvmDenseSet to reallocate.
+ /// determine whether an insertion caused the VmkitDenseSet to reallocate.
const void *getPointerIntoBucketsArray() const { return Buckets; }
private:
@@ -416,7 +416,7 @@
public:
/// Return the approximate size (in bytes) of the actual map.
- /// This is just the raw memory used by MvmDenseSet.
+ /// This is just the raw memory used by VmkitDenseSet.
/// If entries are pointers to objects, the size of the referenced objects
/// are not included.
size_t getMemorySize() const {
@@ -426,10 +426,10 @@
template<typename ValueT,
typename ValueInfoT, bool IsConst>
-class MvmDenseSetIterator {
+class VmkitDenseSetIterator {
typedef ValueT Bucket;
- typedef MvmDenseSetIterator<ValueT, ValueInfoT, true> ConstIterator;
- friend class MvmDenseSetIterator<ValueT, ValueInfoT, true>;
+ typedef VmkitDenseSetIterator<ValueT, ValueInfoT, true> ConstIterator;
+ friend class VmkitDenseSetIterator<ValueT, ValueInfoT, true>;
public:
typedef ptrdiff_t difference_type;
typedef typename llvm::conditional<IsConst, const Bucket, Bucket>::type value_type;
@@ -439,16 +439,16 @@
private:
pointer Ptr, End;
public:
- MvmDenseSetIterator() : Ptr(0), End(0) {}
+ VmkitDenseSetIterator() : Ptr(0), End(0) {}
- MvmDenseSetIterator(pointer Pos, pointer E) : Ptr(Pos), End(E) {
+ VmkitDenseSetIterator(pointer Pos, pointer E) : Ptr(Pos), End(E) {
AdvancePastEmptyBuckets();
}
// If IsConst is true this is a converting constructor from iterator to
// const_iterator and the default copy constructor is used.
// Otherwise this is a copy constructor for iterator.
- MvmDenseSetIterator(const MvmDenseSetIterator<ValueT, ValueInfoT, false>& I)
+ VmkitDenseSetIterator(const VmkitDenseSetIterator<ValueT, ValueInfoT, false>& I)
: Ptr(I.Ptr), End(I.End) {}
reference operator*() const {
@@ -465,13 +465,13 @@
return Ptr != RHS.operator->();
}
- inline MvmDenseSetIterator& operator++() { // Preincrement
+ inline VmkitDenseSetIterator& operator++() { // Preincrement
++Ptr;
AdvancePastEmptyBuckets();
return *this;
}
- MvmDenseSetIterator operator++(int) { // Postincrement
- MvmDenseSetIterator tmp = *this; ++*this; return tmp;
+ VmkitDenseSetIterator operator++(int) { // Postincrement
+ VmkitDenseSetIterator tmp = *this; ++*this; return tmp;
}
private:
Modified: vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp?rev=145034&r1=145033&r2=145034&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp Mon Nov 21 04:39:23 2011
@@ -1041,7 +1041,7 @@
return ConstantStruct::get(STy, ClassElts);
}
-Constant* JavaAOTCompiler::CreateConstantFromClassMap(const mvm::MvmDenseMap<const UTF8*, CommonClass*>& map) {
+Constant* JavaAOTCompiler::CreateConstantFromClassMap(const mvm::VmkitDenseMap<const UTF8*, CommonClass*>& map) {
StructType* STy =
dyn_cast<StructType>(JavaIntrinsics.J3DenseMapType->getContainedType(0));
Module& Mod = *getLLVMModule();
@@ -1055,7 +1055,7 @@
ArrayType* ATy = ArrayType::get(JavaIntrinsics.ptrType, map.NumBuckets * 2);
for (uint32 i = 0; i < map.NumBuckets; ++i) {
- mvm::MvmPair<const UTF8*, CommonClass*> pair = map.Buckets[i];
+ mvm::VmkitPair<const UTF8*, CommonClass*> pair = map.Buckets[i];
if (pair.first == &mvm::TombstoneKey) {
TempElts.push_back(ConstantExpr::getCast(Instruction::BitCast, UTF8TombstoneGV, JavaIntrinsics.ptrType));
TempElts.push_back(Constant::getNullValue(JavaIntrinsics.ptrType));
@@ -1086,7 +1086,7 @@
ConstantStruct::get(STy, elements), "ClassMap");
}
-Constant* JavaAOTCompiler::CreateConstantFromUTF8Map(const mvm::MvmDenseSet<mvm::UTF8MapKey, const UTF8*>& set) {
+Constant* JavaAOTCompiler::CreateConstantFromUTF8Map(const mvm::VmkitDenseSet<mvm::UTF8MapKey, const UTF8*>& set) {
StructType* STy =
dyn_cast<StructType>(JavaIntrinsics.J3DenseMapType->getContainedType(0));
Module& Mod = *getLLVMModule();
Modified: vmkit/trunk/lib/J3/VMCore/LockedMap.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/LockedMap.h?rev=145034&r1=145033&r2=145034&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/LockedMap.h (original)
+++ vmkit/trunk/lib/J3/VMCore/LockedMap.h Mon Nov 21 04:39:23 2011
@@ -24,7 +24,7 @@
#include "types.h"
#include "vmkit/Allocator.h"
-#include "vmkit/MvmDenseMap.h"
+#include "vmkit/VmkitDenseMap.h"
#include "vmkit/Locks.h"
#include "UTF8.h"
@@ -111,25 +111,25 @@
class ClassMap : public mvm::PermanentObject {
public:
ClassMap() {}
- ClassMap(mvm::MvmDenseMap<const mvm::UTF8*, UserCommonClass*>* precompiled) : map(*precompiled) {}
+ ClassMap(mvm::VmkitDenseMap<const mvm::UTF8*, UserCommonClass*>* precompiled) : map(*precompiled) {}
mvm::LockRecursive lock;
- mvm::MvmDenseMap<const mvm::UTF8*, UserCommonClass*> map;
- typedef mvm::MvmDenseMap<const mvm::UTF8*, UserCommonClass*>::iterator iterator;
+ mvm::VmkitDenseMap<const mvm::UTF8*, UserCommonClass*> map;
+ typedef mvm::VmkitDenseMap<const mvm::UTF8*, UserCommonClass*>::iterator iterator;
};
class TypeMap : public mvm::PermanentObject {
public:
mvm::LockNormal lock;
- mvm::MvmDenseMap<const mvm::UTF8*, Typedef*> map;
- typedef mvm::MvmDenseMap<const mvm::UTF8*, Typedef*>::iterator iterator;
+ mvm::VmkitDenseMap<const mvm::UTF8*, Typedef*> map;
+ typedef mvm::VmkitDenseMap<const mvm::UTF8*, Typedef*>::iterator iterator;
};
class SignMap : public mvm::PermanentObject {
public:
mvm::LockNormal lock;
- mvm::MvmDenseMap<const mvm::UTF8*, Signdef*> map;
- typedef mvm::MvmDenseMap<const mvm::UTF8*, Signdef*>::iterator iterator;
+ mvm::VmkitDenseMap<const mvm::UTF8*, Signdef*> map;
+ typedef mvm::VmkitDenseMap<const mvm::UTF8*, Signdef*>::iterator iterator;
};
} // end namespace j3
Modified: vmkit/trunk/lib/J3/VMCore/Precompiled.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/Precompiled.cpp?rev=145034&r1=145033&r2=145034&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/Precompiled.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/Precompiled.cpp Mon Nov 21 04:39:23 2011
@@ -150,12 +150,12 @@
upcalls->OfLong->classLoader = loader;
upcalls->OfDouble->classLoader = loader;
- mvm::MvmDenseSet<mvm::UTF8MapKey, const UTF8*>* precompiledUTF8Map =
- reinterpret_cast<mvm::MvmDenseSet<mvm::UTF8MapKey, const UTF8*>*>(dlsym(nativeHandle, "UTF8Map"));
+ mvm::VmkitDenseSet<mvm::UTF8MapKey, const UTF8*>* precompiledUTF8Map =
+ reinterpret_cast<mvm::VmkitDenseSet<mvm::UTF8MapKey, const UTF8*>*>(dlsym(nativeHandle, "UTF8Map"));
loader->hashUTF8 = new (loader->allocator, "UTF8Map") UTF8Map(loader->allocator, precompiledUTF8Map);
- mvm::MvmDenseMap<const UTF8*, CommonClass*>* precompiledClassMap =
- reinterpret_cast<mvm::MvmDenseMap<const UTF8*, CommonClass*>*>(dlsym(nativeHandle, "ClassMap"));
+ mvm::VmkitDenseMap<const UTF8*, CommonClass*>* precompiledClassMap =
+ reinterpret_cast<mvm::VmkitDenseMap<const UTF8*, CommonClass*>*>(dlsym(nativeHandle, "ClassMap"));
loader->classes = new (loader->allocator, "ClassMap") ClassMap(precompiledClassMap);
for (ClassMap::iterator i = loader->getClasses()->map.begin(),
Modified: vmkit/trunk/lib/Mvm/CommonThread/ctthread.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/CommonThread/ctthread.cpp?rev=145034&r1=145033&r2=145034&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/CommonThread/ctthread.cpp (original)
+++ vmkit/trunk/lib/Mvm/CommonThread/ctthread.cpp Mon Nov 21 04:39:23 2011
@@ -41,7 +41,7 @@
void Thread::yield(void) {
Thread* th = mvm::Thread::get();
- if (th->isMvmThread()) {
+ if (th->isVmkitThread()) {
if (th->doYield && !th->inRV) {
th->MyVM->rendezvous.join();
}
@@ -180,7 +180,7 @@
}
void Thread::enterUncooperativeCode(uint16_t level) {
- if (isMvmThread()) {
+ if (isVmkitThread()) {
if (!inRV) {
assert(!lastSP && "SP already set when entering uncooperative code");
// Get the caller.
@@ -197,7 +197,7 @@
}
void Thread::enterUncooperativeCode(word_t SP) {
- if (isMvmThread()) {
+ if (isVmkitThread()) {
if (!inRV) {
assert(!lastSP && "SP already set when entering uncooperative code");
// The cas is not necessary, but it does a memory barrier.
@@ -209,7 +209,7 @@
}
void Thread::leaveUncooperativeCode() {
- if (isMvmThread()) {
+ if (isVmkitThread()) {
if (!inRV) {
assert(lastSP && "No last SP when leaving uncooperative code");
word_t savedSP = lastSP;
More information about the vmkit-commits
mailing list