D.gnu - [Bug 162] New: GDC unable to de-virtualise method calls
- via D.gnu (28/28) Oct 26 2014 Date: Sun, 26 Oct 2014 10:37:29 +0000
Date: Sun, 26 Oct 2014 10:37:29 +0000
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
http://bugzilla.gdcproject.org/show_bug.cgi?id=162
            Bug ID: 162
           Summary: GDC unable to de-virtualise method calls
           Product: GDC
           Version: development
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: Normal
         Component: gdc
          Assignee: ibuclaw gdcproject.org
          Reporter: ibuclaw gdcproject.org
Currently we emit method calls as the following:
  *(c->__vptr + 40) (c, 1, 2, 3);
Which translate directly into the following trees:
  indirect_ref(pointer_plus(component_ref(c, __vptr), 40))
GCC provides a more simplistic tree code called obj_type_ref, which represents
a virtual method lookup, and given the binfo structure we already pass to the
backed, this would give a chance for the optimiser passes to statically
determine the dynamic type of the object and devirtualise the call.
  obj_type_ref(component_ref(c, __vptr), c, 40)
-- 
You are receiving this mail because:
You are watching all bug changes.
 Oct 26 2014








 
  
  
  " via D.gnu" <d.gnu puremagic.com>
 " via D.gnu" <d.gnu puremagic.com>