July 19, 2017
https://bugzilla.gdcproject.org/show_bug.cgi?id=266

            Bug ID: 266
           Summary: Can threadasm.S be replaced with generics?
           Product: GDC
           Version: development
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: libgdruntime
          Assignee: ibuclaw@gdcproject.org
          Reporter: ibuclaw@gdcproject.org

Having a small play around, these seem to generate what looks like correct code on x86/64.  Would be nice if confirmed to work with more, then we can get rid of one extra non-portable file.

---
import gcc.builtins;

//
void callWithStackShell(scope void delegate(void* sp) nothrow fn) nothrow
{
  version (GNU)
  {
    __builtin_unwind_init();
    asm { ""; }
    fn(__builtin_stack_save());
    asm { ""; }
  }
  else
    static assert(0);
}

//
extern (C) void fiber_switchContext(void** oldp, void* newp) nothrow
{
  version (GNU)
  {
    __builtin_unwind_init();
    asm { ""; }
    *oldp = __builtin_stack_save();
    __builtin_stack_restore(newp);
    asm { ""; }
  }
  else
    static assert(0);
}
---

https://explore.dgnu.org/g/W7zrb8

-- 
You are receiving this mail because:
You are watching all bug changes.