2010-10-07 26 views
5

He oído que las versiones recientes de gcc son muy buenas para convertir llamadas a través de punteros a llamadas directas. Sin embargo, no puedo encontrar nada al respecto en la web o la vista rápida del código fuente de gcc. ¿Alguien sabe si esto es realmente cierto y, de ser así, qué algoritmo usa para hacer esto?¿Qué algoritmo usa gcc para convertir llamadas a través de punteros a llamadas directas?

+0

No estoy familiarizado con el funcionamiento interno de gcc, pero en general, si un compilador puede demostrar que un puntero de función solo puede tener un valor particular en determinado sitio de llamada, luego esa llamada puede codificarse como una llamada directa al valor de puntero específico en lugar de una llamada indirecta a través del puntero de función. –

Respuesta

0

Es solo una forma de propagación de valores. Si puedo probar que el puntero del objeto p (a un calss virtual) siempre apunta a un objeto de una determinada clase concreta, entonces puedo llamar directamente a las funciones miembro de esa clase. Si no, tengo que pasar por el vtable.

Cuestiones relacionadas