~ubuntu-branches/ubuntu/quantal/llvm-3.1/quantal

« back to all changes in this revision

Viewing changes to lib/MC/MCModule.cpp

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2012-03-29 19:09:51 UTC
  • Revision ID: package-import@ubuntu.com-20120329190951-aq83ivog4cg8bxun
Tags: upstream-3.1~svn153643
ImportĀ upstreamĀ versionĀ 3.1~svn153643

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//===- lib/MC/MCModule.cpp - MCModule implementation ----------------------===//
 
2
//
 
3
//                     The LLVM Compiler Infrastructure
 
4
//
 
5
// This file is distributed under the University of Illinois Open Source
 
6
// License. See LICENSE.TXT for details.
 
7
//
 
8
//===----------------------------------------------------------------------===//
 
9
 
 
10
#include "llvm/MC/MCAtom.h"
 
11
#include "llvm/MC/MCModule.h"
 
12
 
 
13
using namespace llvm;
 
14
 
 
15
MCAtom *MCModule::createAtom(MCAtom::AtomType Type,
 
16
                             uint64_t Begin, uint64_t End) {
 
17
  assert(Begin < End && "Creating MCAtom with endpoints reversed?");
 
18
 
 
19
  // Check for atoms already covering this range.
 
20
  IntervalMap<uint64_t, MCAtom*>::iterator I = OffsetMap.find(Begin);
 
21
  assert((!I.valid() || I.start() < End) && "Offset range already occupied!");
 
22
 
 
23
  // Create the new atom and add it to our maps.
 
24
  MCAtom *NewAtom = new MCAtom(Type, this, Begin, End);
 
25
  AtomAllocationTracker.insert(NewAtom);
 
26
  OffsetMap.insert(Begin, End, NewAtom);
 
27
  return NewAtom;
 
28
}
 
29
 
 
30
// remap - Update the interval mapping for an atom.
 
31
void MCModule::remap(MCAtom *Atom, uint64_t NewBegin, uint64_t NewEnd) {
 
32
  // Find and erase the old mapping.
 
33
  IntervalMap<uint64_t, MCAtom*>::iterator I = OffsetMap.find(Atom->Begin);
 
34
  assert(I.valid() && "Atom offset not found in module!");
 
35
  assert(*I == Atom && "Previous atom mapping was invalid!");
 
36
  I.erase();
 
37
 
 
38
  // Insert the new mapping.
 
39
  OffsetMap.insert(NewBegin, NewEnd, Atom);
 
40
 
 
41
  // Update the atom internal bounds.
 
42
  Atom->Begin = NewBegin;
 
43
  Atom->End = NewEnd;
 
44
}
 
45