Diego Garbervetsky, Mike Barnett, Manuel Fähndrich, Francesco Logozzo.

Slides:



Advertisements
Presentaciones similares
Métodos y parámetros.
Advertisements

III - Gestión de memoria
Creación y destrucción de objetos
Prototipo de compilador didáctico del lenguaje LC99
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 la invocación.
Herencia simple y multiple
Elementos básicos del Lenguaje
Programación I Teoría III
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II Prof. Dr. Gustavo Patiño MJ
Tema 1. Introducción a la programación (Lenguaje java).
1.3 Programación modular. Subprogramas.
PROGRAMACION DE Pilas o Stacks y Colas
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Preguntas tipo test (Tema I)
Traducción dirigida por la Sintaxis
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.

Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Lic. Rosemary Torrico Bascopé
UNIVERSIDAD TECNOLÓGICA DE HERMOSILLO T.S.U. EN T.I.C., Área: Sistemas Informáticos Ing. José Padilla Duarte y estudiantes de Sistemas Informáticos Hermosillo,
COLAS, IMPLEMENTACIÓN A PARTIR DE LISTAS Y PARA PILAS
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
TRADUCTOR DE UN PROGRAMA
Criterios de la Orientación a Objetos 1. Método y Lenguaje (proceso de pensamiento y notaciones para analizar y producir software). 2. Implementación y.
MIPS Intermedio.
M.C. Meliza Contreras González
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
Índice. Revisando conceptos acerca de la memoria.
INGENIERIA EN SISTEMAS COMPUTACIONALES
Estructura de Datos y Algoritmos
Clase 10: Estructuras de datos y arreglos.
Proyecto de Programación de Sistemas “Uso de Java Native Interface para envío y recepción de datos por puerto paralelo” Nombre: Ignacio Zamora R. Profesor:
PUNTEROS Ing Anghello Quintero.
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.
Scheduling dinámico Algoritmo de Tomasulo.
Material de apoyo Unidad 4 Estructura de datos
Herramientas de polimorfismo y herencia en C++
Tipos de Datos. Entrada-Salida.. La entrada-salida (I/O) le permite a un programa comunicarse con el mundo exterior. Esta comunicación puede realizarse.
APRENDIZ: SANDRA L. CAICEDO C. ORDEN: 20194
Alineamiento.
Informática Ingeniería en Electrónica y Automática Industrial
Universitarios: Ricardo Gonzales Jimenez Wilfredo Coca Reinaldo Yohan Docente: Lic. Israel Torrez Valverde Tema: Listas doblemente Enlazadas.
Recursividad (2 clases) 1. Nivelación Funciones Menú Vectores String
Universes: Lightweight Ownership for JML Werner Dietl Peter Müller.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Punteros Recomendado: 1. Nivelación Funciones
Flujo en redes Def: una red N es un grafo orientado conexo que tiene dos nodos distinguidos una fuente s con grado de salida positivo y un sumidero t con.
TEMA 9: DIAGRAMA DE CLASE EN UML
Metodología de la programación
UML 2.0 Diagramas de Comportamiento
INSTITUTO TECNOLOGICO DE APIZACO
Alexandre D. Salcianu and Martin C. Rinard. Idea  Método para analizar la pureza de programas Java (no anotados).  Construido sobre una mejora de “combined.
Colegio de Bachilleres Plantel 13 Xochimilco - Tepepan
 Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan.
PROGRAMACION DE Pilas o Stacks y Colas
Algoritmos y estructura de datos en I.O. Arboles Generales.
MEMORIA DINÁMICA.
Listas Dinámicas.
1 ListaUna Lista se define como una serie de N elementos E 1, E 2,..., E N, ordenados de manera consecutiva, es decir, el elemento E k (que se denomina.
Ciclos en Visual Basic Yaimira Pérez. Los ciclos son estructuras de repetición que ejecutan una o varias instrucciones durante la cantidad de veces que.
Presentación De UML Lenguaje estándar para escribir planos de software Se usa para visualizar, especificar, construir y documentar los artefactos de un.
Constructores Los constructores inicializan nuestra clase, le dan un estado inicial estable listo para su uso. Siempre que declarábamos una variable numérica.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
P ROCESO DE E NSAMBLADO Cámara Vázquez Berenice Rubí.
Katty Evangelina Hipólito Chi.   Aunque cada maquina tiene un lenguaje ensamblador distinto, el proceso de ensamblador tiene suficiente similitudes.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Transcripción de la presentación:

Diego Garbervetsky, Mike Barnett, Manuel Fähndrich, Francesco Logozzo

Objetivos  Extender el análisis de grafos Points-to para.NET (parámetros por referencia y estructuras).  Incrementar la precisión en el análisis de efectos de métodos no analizables.

Definiciones  Método no analizable  Un método es no analizable si su código no está disponible.  Método débilmente puro  Un método es débilmente puro si no “muta” ninguna locación existente en el estado correcto anterior a la invocación del método.

El problema List Copy(IEnumerable src) { List l = new List (); IEnumerator iter = src.GetEnumerator(); while (iter.MoveNext()){ int x = iter.get_Current(); l.Add(x); } return l; }

Salcianu  Muy conservador: no puede analizar llamadas a métodos de interfaces, porque  src e iter podrían escapar a cualquier posición en memoria (tipado dinámico)  el método tiene una (potencial) escritura a cualquier posición accesible, como las variables estáticas.

Extensiones para.NET  Address nodes  Representan objetos y estructuras.  Un address node que representa un objeto tiene ejes salientes con etiqueta *.  Un address node para valores de estructuras tiene un eje saliente por campo (la etiqueta es el nombre del campo).

Ejemplo: v1 = v2 (estructura) &v0&v1 &f1&f2 &g i2 i1 * * * f1f2 g

Ejemplo: v1 = v2 (antes) &v1 &f1&f2 &g i2 i1 * * f1f2 g &v2 &f1&f2 &g i4 i3 * * f1f2 g

Ejemplo: v1 = v2 (después) &v1 &f1&f2 &g * * f1f2 g &v2 &f1&f2 &g i4 i3 * * f1f2 g

Métodos no analizables  Supongamos que tenemos un método no analizable, del que solamente sabemos que escribe sobre todo objeto alcanzable por el parámetro:  m2(p1)  p1.f1 = o;  p1.f1.f2 = o;  p1.f1.f2…fn = o;  Tenemos además otro método del que tenemos información solamente sobre a1.f1, y este método llama a m2:  m1()  …  m2(a1);

Métodos no analizables  Sería un error considerar los efectos de m2 solo sobre a1.f1.  Tenemos información insuficiente sobre el contexto de m1.  Necesitamos un mecanismo para hacer que los efectos del método llamado persistan en el contexto del método llamador, y así actualizar a1 cuando dispongamos de más información.

Extensiones para métodos no analizables (nodos)  Omega nodes (ω)  Modelan el conjunto de nodos alcanzables desde ese nodo.  Omega Confined nodes (ωC)  Subcojunto de ω. Son nodos ω que representan solo aquellos alcanzables por los campos propios del llamador.  La clase T es dueña del campo f si el objeto O de tipo T es dueño del objeto apuntado por su campo f.

Extensiones para métodos no analizables (ejes)  Ejes “?”  Representan cualquier campo existente.  Ejes “$”  Campos no propios. Permite distinguir entre referencias a objetos que pueden ser escritos por el método y los que únicamente pueden ser leídos.

Matcheo interprocedural  Matcheo con ω: calculamos el conjunto de nodos (del llamador) alcanzables desde este, y finalmente todos los load nodes se convierten en ω.  Matcheo con ωC: consideramos solo caminos que pasan por los ejes “?” y los ejes propios. Rechazamos los que contienen ejes “$”.

Ejemplo: omega nodes (método llamado) &p2 & ω2ω2ω1ω1 &p1 ** * ?

Ejemplo: omega nodes (método llamador) &f1 IN2 IN1 &a1 * * f1 &f2 L4 IN3 &a2 * * f2

Ejemplo: omega nodes (bindeando) &f1 IN2 IN1 &a1 * * f1 &f2 L4 IN3 &a2 * * f2 & & ? * * * ? *

Ejemplo: omega nodes (bindeando) &f1 IN2 IN1 &a1 * * f1 &f2 ωL4 IN3 &a2 * * f2 & & ? * * * ? *

Ejemplo: omega nodes (bindeado) &f1 IN2 IN1 &a1 * * f1 &f2 ωL4 IN3 &a2 * * f2 & & ? * * * ? *

Anotaciones

Conclusiones  Se logró extender el analisis de Salcianu para  Soportar el modelo de memoria de.NET  Tratar los métodos no analizables de manera más precisa  Mediante los nodos omega y el lenguaje de anotaciones  Verificaciones con la especificación es suficientemente simple utilizando el lenguaje de anotaciones.

Preguntas??