diff --git a/lldb/source/Expression/IRMemoryMap.cpp b/lldb/source/Expression/IRMemoryMap.cpp
index 4733b16..e96bddd 100644
--- a/lldb/source/Expression/IRMemoryMap.cpp
+++ b/lldb/source/Expression/IRMemoryMap.cpp
@@ -47,7 +47,7 @@
 }
 
 lldb::addr_t
-IRMemoryMap::FindSpace (size_t size)
+IRMemoryMap::FindSpace (size_t size, bool zero_memory)
 {
     lldb::TargetSP target_sp = m_target_wp.lock();
     lldb::ProcessSP process_sp = m_process_wp.lock();
@@ -60,7 +60,10 @@
     {
         Error alloc_error;
 
-        ret = process_sp->AllocateMemory(size, lldb::ePermissionsReadable | lldb::ePermissionsWritable, alloc_error);
+        if (!zero_memory)
+            ret = process_sp->AllocateMemory(size, lldb::ePermissionsReadable | lldb::ePermissionsWritable, alloc_error);
+        else
+            ret = process_sp->CallocateMemory(size, lldb::ePermissionsReadable | lldb::ePermissionsWritable, alloc_error);
 
         if (!alloc_error.Success())
             return LLDB_INVALID_ADDRESS;
@@ -225,7 +228,7 @@
 }
 
 lldb::addr_t
-IRMemoryMap::Malloc (size_t size, uint8_t alignment, uint32_t permissions, AllocationPolicy policy, Error &error)
+IRMemoryMap::Malloc (size_t size, uint8_t alignment, uint32_t permissions, AllocationPolicy policy, bool zero_memory, Error &error)
 {
     lldb_private::Log *log (lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
     error.Clear();
@@ -263,7 +266,11 @@
             log->Printf ("IRMemoryMap::%s process_sp=0x%" PRIx64 ", process_sp->CanJIT()=%s, process_sp->IsAlive()=%s", __FUNCTION__, (lldb::addr_t) process_sp.get (), process_sp && process_sp->CanJIT () ? "true" : "false", process_sp && process_sp->IsAlive () ? "true" : "false");
         if (process_sp && process_sp->CanJIT() && process_sp->IsAlive())
         {
-            allocation_address = process_sp->AllocateMemory(allocation_size, permissions, error);
+            if (!zero_memory)
+              allocation_address = process_sp->AllocateMemory(allocation_size, permissions, error);
+            else
+              allocation_address = process_sp->CallocateMemory(allocation_size, permissions, error);
+
             if (!error.Success())
                 return LLDB_INVALID_ADDRESS;
         }
@@ -287,7 +294,11 @@
         {
             if (process_sp->CanJIT() && process_sp->IsAlive())
             {
-                allocation_address = process_sp->AllocateMemory(allocation_size, permissions, error);
+                if (!zero_memory)
+                  allocation_address = process_sp->AllocateMemory(allocation_size, permissions, error);
+                else
+                  allocation_address = process_sp->CallocateMemory(allocation_size, permissions, error);
+
                 if (!error.Success())
                     return LLDB_INVALID_ADDRESS;
             }
