La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Alexandre D. Salcianu and Martin C. Rinard. Definiciones  Un método es puro si no “muta” ninguna locación existente en el estado correcto anterior a.

Presentaciones similares


Presentación del tema: "Alexandre D. Salcianu and Martin C. Rinard. Definiciones  Un método es puro si no “muta” ninguna locación existente en el estado correcto anterior a."— Transcripción de la presentación:

1 Alexandre D. Salcianu and Martin C. Rinard

2 Definiciones  Un método es puro si no “muta” ninguna locación existente en el estado correcto anterior a la invocación del método.

3 Para qué?  Cómo input para algunos análisis de programas  Para entender y documentar el programa  Para reducir el trabajo de los model checkers

4 Idea  Método para analizar la pureza de programas Java (no anotados).  Construido sobre una mejora de “combined pointer and escape analysis method” (Rinard- Whaley)  Chequea si un método es puro, en el sentido de que no cambia ningún objeto existente en el pre-estado.

5 Mejoras  Se distingue entre objetos existentes en el pre-estado y objetos nuevos (creado por el método)  La información adicional generada por el método sirve para obtener información útil sobre efectos colaterales.  El método fue probado (correctitud), implementado y utilizado en variedad de tareas.

6 Generalizaciones de Pureza  Parámetros Read-Only : el método no cambia ningún objeto alcanzable desde el parámetro.  Parámetros Seguros (safe):  parámetros read-only  el método no crea ningún camino externo visible en el heap hacia objetos alcanzables desde el parámetro.

7 Resumen hasta acá  Análisis para detectar métodos puros en programas Java no anotados  Presenta mejoras con respecto a análisis anteriores  Permite la alocación de objetos nuevos en el heap  Detecta read-only and safe parameters.

8 Revisión del análisis  Para cada método m y cada punto del programa dentro de m el análisis computa un points-to graph que modela la parte del heap que el método m accede antes de ese punto.

9 Revisión del Análisis  Un objeto “escapa” si es alcanzable desde afuera del método analizable (ej: desde uno de los parámetros)  En otro caso, el objeto está “capturado”  Un eje externo siempre termina en un load node

10 Revisión del Análisis  Para cada método m el análisis computa un conjunto W m que contiene los campos abstractos modificados que son visibles externamente.  Un campo abstracto es un campo para un nodo específico.

11 Revisión del Análisis  El análisis examina métodos empezando desde las hojas.  Se realiza sin conocer el contexto en que se llamó el método (análisis composicional)  Obtiene un único resultado parametrizable  El resultado es luego instanciado en cada lugar que se invoque el método m.  Normalmente, el análisis procesa cada método una única vez.  Métodos recursivos requieren varias pasadas hasta llegar a un punto fijo.

12 Ejemplo: Cell Constructor

13 Ejemplo: List.add

14 Descanso??????

15 Continuando el Análisis  Cada points-to graph registra los nodos que “escapan globalmente”, es decir, aquellos nodos que son potencialmente accesibles por código que desconocemos.  Cualquier nodo alcanzable desde estos nodos también escapa globalmente  El análisis debe ser muy conservativo con respecto a estos nodos, en particular, porque pueden ser mutados por código no conocido.  Se utiliza un nodo especial para otros nodos desconocidos que escapan globalmente

16 Análisis Intraprocedural

17 Análisis Interprocedural  Por cada llamada (call) del tipo v R = v 0.s(v 1, …, v j ) el análisis usa el points-to graph G anterior a la llamada y el points-to graph G calle (gráfico final del método invocado) para computar un points-to graph posterior a la invocación del método.  Si hay múltiples posibles invocaciones, el análisis las considera a todas y mergea el conjunto de resultados de los points to graph

18 Paso 1  El análisis computa un mapeo, que relaciona los parámetros y los nodos cargados del método invocado, con los nodos que representan Incluir gráfico

19 Paso 2

20 Análisis de Efectos  Este análisis se realiza sobre el análisis descripto anteriormente.  El análisis propaga efectos interprocedurales de las siguiente forma: cuando el análisis del método m encuentra una invocación, se utiliza el mapeo de nodos intraprocedural para proyectar los efectos del método invocado e incluir esos efectos en el conjunto W m.

21 Pureza del Método  Se computa el conjunto A de nodos que son alcanzables en G, desde nodos parámetros, utilizando ejes externos.  El método m es puro si y sólo si para todo n perteneciente a A: 1. n no escapa globalmente 2. Ningún campo de n es alterado

22 Parámetros read-Only Para chequear si el parámetro p es read-only:  Considerar el nodo correspondiente n p  Determinar el conjunto S 1 que contiene a n p y todos los load nodes alcanzables desde n p utilizando ejes externos  El parámetro p es read-only si y solo si: 1. No hay ningún campo abstracto perteneciente a W m tal que n pertenece a S 1 2. Ningún nodo de S 1 escapa globalmente

23 Parámetros Safe Para chequear si un p parámetro es safe:  Se computa el conjunto S 1  Se computa el conjunto S 2 de nodos alcanzables desde nodos parámetros y/o desde nodos retornados, utilizando ejes externos o internos.  Para chequear la ausencia de un nuevo camino hacia un objeto alcanzable desde p, basta con chequear que ningún eje interno vaya desde un nodo en S 2 a un nodo en S 1

24 Write effects


Descargar ppt "Alexandre D. Salcianu and Martin C. Rinard. Definiciones  Un método es puro si no “muta” ninguna locación existente en el estado correcto anterior a."

Presentaciones similares


Anuncios Google