[Lldb-commits] [PATCH] Don't use a random probe / allocation scheme in the IRMemoryMap

Zachary Turner zturner at google.com
Wed Jul 9 09:51:01 PDT 2014


Closed by commit rL212630 (authored by @zturner).

REPOSITORY
  rL LLVM

http://reviews.llvm.org/D4300

Files:
  lldb/trunk/source/Expression/IRMemoryMap.cpp

Index: lldb/trunk/source/Expression/IRMemoryMap.cpp
===================================================================
--- lldb/trunk/source/Expression/IRMemoryMap.cpp
+++ lldb/trunk/source/Expression/IRMemoryMap.cpp
@@ -53,6 +53,8 @@
     lldb::ProcessSP process_sp = m_process_wp.lock();
 
     lldb::addr_t ret = LLDB_INVALID_ADDRESS;
+    if (size == 0)
+        return ret;
 
     if (process_sp && process_sp->CanJIT() && process_sp->IsAlive())
     {
@@ -66,37 +68,13 @@
             return ret;
     }
 
-    for (int iterations = 0; iterations < 16; ++iterations)
+    ret = 0;
+    if (!m_allocations.empty())
     {
-        lldb::addr_t candidate = LLDB_INVALID_ADDRESS;
-
-        switch (target_sp->GetArchitecture().GetAddressByteSize())
-        {
-        case 4:
-            {
-                uint32_t random_data = rand();
-                candidate = random_data;
-                candidate &= ~0xfffull;
-                break;
-            }
-        case 8:
-            {
-                uint32_t random_low = rand();
-                uint32_t random_high = rand();
-                candidate = random_high;
-                candidate <<= 32ull;
-                candidate |= random_low;
-                candidate &= ~0xfffull;
-                break;
-            }
-        }
-
-        if (IntersectsAllocation(candidate, size))
-            continue;
-
-        ret = candidate;
-
-        return ret;
+        auto back = m_allocations.rbegin();
+        lldb::addr_t addr = back->first;
+        size_t alloc_size = back->second.m_size;
+        ret = llvm::RoundUpToAlignment(addr+alloc_size, 4096);
     }
 
     return ret;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D4300.11206.patch
Type: text/x-patch
Size: 1662 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20140709/6abc7975/attachment.bin>


More information about the lldb-commits mailing list