@@ -319,11 +319,11 @@ IRMemoryMap::Allocation::Allocation(lldb::addr_t process_alloc,
319319 }
320320}
321321
322- lldb::addr_t IRMemoryMap::Malloc (size_t size, uint8_t alignment,
323- uint32_t permissions, AllocationPolicy policy,
324- bool zero_memory, Status &error) {
322+ llvm::Expected<lldb::addr_t > IRMemoryMap::Malloc (size_t size, uint8_t alignment,
323+ uint32_t permissions,
324+ AllocationPolicy policy,
325+ bool zero_memory) {
325326 lldb_private::Log *log (GetLog (LLDBLog::Expressions));
326- error.Clear ();
327327
328328 lldb::ProcessSP process_sp;
329329 lldb::addr_t allocation_address = LLDB_INVALID_ADDRESS;
@@ -347,15 +347,14 @@ lldb::addr_t IRMemoryMap::Malloc(size_t size, uint8_t alignment,
347347
348348 switch (policy) {
349349 default :
350- error =
351- Status::FromErrorString ( " Couldn't malloc: invalid allocation policy " );
352- return LLDB_INVALID_ADDRESS ;
350+ return llvm::createStringError (
351+ llvm::inconvertibleErrorCode (),
352+ " Couldn't malloc: invalid allocation policy " ) ;
353353 case eAllocationPolicyHostOnly:
354354 allocation_address = FindSpace (allocation_size);
355- if (allocation_address == LLDB_INVALID_ADDRESS) {
356- error = Status::FromErrorString (" Couldn't malloc: address space is full" );
357- return LLDB_INVALID_ADDRESS;
358- }
355+ if (allocation_address == LLDB_INVALID_ADDRESS)
356+ return llvm::createStringError (llvm::inconvertibleErrorCode (),
357+ " Couldn't malloc: address space is full" );
359358 break ;
360359 case eAllocationPolicyMirror:
361360 process_sp = m_process_wp.lock ();
@@ -366,6 +365,7 @@ lldb::addr_t IRMemoryMap::Malloc(size_t size, uint8_t alignment,
366365 process_sp && process_sp->CanJIT () ? " true" : " false" ,
367366 process_sp && process_sp->IsAlive () ? " true" : " false" );
368367 if (process_sp && process_sp->CanJIT () && process_sp->IsAlive ()) {
368+ Status error;
369369 if (!zero_memory)
370370 allocation_address =
371371 process_sp->AllocateMemory (allocation_size, permissions, error);
@@ -374,25 +374,25 @@ lldb::addr_t IRMemoryMap::Malloc(size_t size, uint8_t alignment,
374374 process_sp->CallocateMemory (allocation_size, permissions, error);
375375
376376 if (!error.Success ())
377- return LLDB_INVALID_ADDRESS ;
377+ return error. takeError () ;
378378 } else {
379379 LLDB_LOGF (log,
380380 " IRMemoryMap::%s switching to eAllocationPolicyHostOnly "
381381 " due to failed condition (see previous expr log message)" ,
382382 __FUNCTION__);
383383 policy = eAllocationPolicyHostOnly;
384384 allocation_address = FindSpace (allocation_size);
385- if (allocation_address == LLDB_INVALID_ADDRESS) {
386- error =
387- Status::FromErrorString (" Couldn't malloc: address space is full" );
388- return LLDB_INVALID_ADDRESS;
389- }
385+ if (allocation_address == LLDB_INVALID_ADDRESS)
386+ return llvm::createStringError (
387+ llvm::inconvertibleErrorCode (),
388+ " Couldn't malloc: address space is full" );
390389 }
391390 break ;
392391 case eAllocationPolicyProcessOnly:
393392 process_sp = m_process_wp.lock ();
394393 if (process_sp) {
395394 if (process_sp->CanJIT () && process_sp->IsAlive ()) {
395+ Status error;
396396 if (!zero_memory)
397397 allocation_address =
398398 process_sp->AllocateMemory (allocation_size, permissions, error);
@@ -401,17 +401,16 @@ lldb::addr_t IRMemoryMap::Malloc(size_t size, uint8_t alignment,
401401 process_sp->CallocateMemory (allocation_size, permissions, error);
402402
403403 if (!error.Success ())
404- return LLDB_INVALID_ADDRESS ;
404+ return error. takeError () ;
405405 } else {
406- error = Status::FromErrorString (
406+ return llvm::createStringError (
407+ llvm::inconvertibleErrorCode (),
407408 " Couldn't malloc: process doesn't support allocating memory" );
408- return LLDB_INVALID_ADDRESS;
409409 }
410410 } else {
411- error = Status::FromErrorString (
412- " Couldn't malloc: process doesn't exist, and this "
413- " memory must be in the process" );
414- return LLDB_INVALID_ADDRESS;
411+ return llvm::createStringError (llvm::inconvertibleErrorCode (),
412+ " Couldn't malloc: process doesn't exist, "
413+ " and this memory must be in the process" );
415414 }
416415 break ;
417416 }
0 commit comments