창 병 모 숙명여대 전산학과 http://cs.sookmyung.ac.kr/~chang 자바 언어를 위한 CFA 창 병 모 숙명여대 전산학과 http://cs.sookmyung.ac.kr/~chang.

Slides:



Advertisements
Similar presentations
Copyright © 2015 Pearson Education, Inc. 6 장 : 프로그래밍 언어.
Advertisements

김예슬 김원석 김세환. Info Northcutt Bikes Northcutt Bikes The Forecasting problem The Forecasting problem The solution 1~6 The.
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
Copyright © 2006 The McGraw-Hill Companies, Inc. 프로그래밍 언어론 2nd edition Tucker and Noonan 5 장 타입 “ 타입은 컴퓨터 프로그래밍의 효소이다 ; 프로그래밍은 타입을 통해 소화할만한 것이 된다.” 로빈.
이력서 작성법 서강대학교 전자공학과. 이력서 이력서란 ? ◦ 이력서 ( 履歷書 ) a rsum 《미》 ;a personal history[statement];a curriculum vitae 《라》 ;a record of one’s life ◦ 이력 [ 履歷 ] [ 명사.
1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도    1. 기관별 맞춤형 집중교육 : 실습 및 개인별 집중지도 (상설) 기관별 맞춤형 교육 - 당 교육기관에서.
ALL IN ONE WORKING HOLIDAY!
3. C++와 객체지향 C++ 코딩 방법 객체 단위로 2 개의 파일 인터페이스 파일 구현파일
8장 프로그래밍 언어 8.1 프로그램이란? 8.2 프로그램 언어의 역사 8.3 프로그램 설계 절차
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
C++ Tutorial 1 서강대학교 데이터베이스 연구실.
Chapter 7 ARP and RARP.
IT Application Development Dept. Financial Team May 24, 2005
제6장 제어(Control) 6.1 구조적 프로그래밍(Structured Programming)
REINFORCEMENT LEARNING
Ruby on Rails – 1. Ruby Aon의 공부하면서 만드는 세미나 1탄.
제 6 장 데이터 타입 6.1 데이터 타입 및 타입 정보 6.2 타입의 용도 6.3 타입 구성자 6.4 사례 연구
프로그래밍 언어론 2004년 가을학기 창 병 모 숙명여대 컴퓨터과학과.
Ruby 프로그래밍 1 문자열 입출력 제어구조 looping 함수 정의
Internet Computing KUT Youn-Hee Han
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
제7장 제어구조 I – 식과 문장.
Java RMI (Remote Method Invocation)
10장 객체-지향 프로그래밍 II ©창병모.
바인딩, 메모리 관리 SANGJI University Kwangman Ko
Visual C Feature Pack Furyheimdall.tistory.com.
제 1 장 C 언어의 개요 Google 공동 창업자, 래리 페이지와 세르게이 브린.
[INA240] Data Structures and Practice
이산수학(Discrete Mathematics) 수학적 귀납법 (Mathematical Induction)
Dynamic Programming.
Internet Computing KUT Youn-Hee Han
C ++ 프로그래밍 시작.
Chapter 2. Finite Automata Exercises
Discrete Math II Howon Kim
계수와 응용 (Counting and Its Applications)
adopted from KNK C Programming : A Modern Approach
이산수학(Discrete Mathematics)  증명 전략 (Proof Strategy)
자바의 신 Volume 1 1부(1~3장) 자바의 신 메인 홈 : 자바의 신 페이스북: 자바의 신 문제 풀이 :
메소드와 클래스 정의 및 문제 풀이 Method and Class Define and Problem Solve
Introduction to Programming Language
Discrete Math II Howon Kim
Dynamic Programming.
Java IT응용시스템공학과 김형진 교수 5장. 객체지향 개념 public class SumTest {
Chapter3 : 객체지향의 개념 3.1 객체지향(object-oriented)과
Chap02 객체 지향 개념 2.1 객체지향(object-oriented)과 절차지향(procedural-oriented)
: 부정(negative)의 의미를 나타내는 접두사
JA A V W. 04.
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
Chapter 4 변수 및 바인딩.
Operating System Multiple Access Chatting Program using Multithread
Chapter 02. 소프트웨어와 자료구조.
Signature, Strong Typing
Signature, Strong Typing
UML과 객체지향 모델링 UML의 개요 객체지향 모델링.
Chapter 13 – 객체 지향 프로그래밍 Outline 13.1 소프트웨어의 재사용과 독립성
이산수학(Discrete Mathematics) 비둘기 집 원리 (The Pigeonhole Principle)
이산수학(Discrete Mathematics)
Signature, Strong Typing
Java RMI (Remote Method Invocation)
Analysis and Testing of Programs with Exception-Handling Constructs
점화와 응용 (Recurrence and Its Applications)
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
1. 관계 데이터 모델 (1) 관계 데이터 모델 정의 ① 논리적인 데이터 모델에서 데이터간의 관계를 기본키(primary key) 와 이를 참조하는 외래키(foreign key)로 표현하는 데이터 모델 ② 개체 집합에 대한 속성 관계를 표현하기 위해 개체를 테이블(table)
The general form of 0-1 programming problem based on DNA computing
Java 5장. 객체지향 개념 public class SumTest {
이산수학(Discrete Mathematics)  증명 전략 (Proof Strategy)
Machine architecture Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Chapter 2.
[CPA340] Algorithms and Practice Youn-Hee Han
C++ 언어의 특징
한상철 (Han, Sangchul) 상허연구동 102호 ( )
Presentation transcript:

창 병 모 숙명여대 전산학과 http://cs.sookmyung.ac.kr/~chang 자바 언어를 위한 CFA 창 병 모 숙명여대 전산학과 http://cs.sookmyung.ac.kr/~chang

목차 Higher-order CFA Class analysis Simpler class analyses

Higher-order CFA

Higher-order Flow Analysis Call graphs Many program analyses rely on a call-graph. There is an edge (f,g) if function f calls function g. Call graphs are easy to compute in FORTRAN. Not so easy in higher-order languages functional (ML) object-oriented (Java, C++) pointer-based (C)

Higher-order Control Flow Analysis In a functional language e1 e2 closure analysis [Shivers88] In an object oriented language e.m() class analysis or reference analysis In a pointer language (*p)() pointer analysis In each case it is unclear which function is called.

Class Analysis for Java

Java overview Dynamic binding class analysis Simpler class analyses inheritance and overriding class analysis analysis of object type Simpler class analyses CHA RTA XTA VTA

References and Inheritance An object reference can refer to an object of its class, or an object of any class related to it by inheritance For example, if Christmas extends Holiday Holiday day; day = new Christmas();

References and Inheritance A polymorphic reference one which can refer to one of several possible methods class Holiday { class Christmas extends Holiday { celebrate( ) { … } celebrate( ) { … } } } Now consider the following invocation: day.celebrate();

Dynamic binding How to determine which method is invoked the type of the object being referenced, not the reference type Dynamic binding Polymorphic references are therefore resolved at run-time. Note if an invocation is in a loop, the same line of code could execute different methods at different times

Class Analyses for Java Why class analysis for Java ? the type(class) of the object being referenced determines which method is invoked not the declared reference type The goal to approximate the classes of the objects, to which an expression may refer Also gives an approximation of the call graph

Class Analyses for Java A set variable Xe for each expression e. class names of the objects, to which the expression e may refer Set up set-constraints of the form : Xe Ê se Analysis assigns possible classes of e to Xe Solution of the constraints yield the information

Sample Constraints for Class Analyses Suppose e is each of the following expressions new C | Xe Ê {C} if e0 then e1 else e2 | Xe Ê Xe1 È Xe2 id = e1 | Xid Ê Xe1 Method call e0.m(e1) for each class C in [e0] with a method m(x1) = return em C Î Xe0 Þ Xx1 Ê Xe1 Xe Ê Xem

History in Class Analyses Constraint resolution in O(n3 ) time. This analysis was discovered by Palsberg and Schwartzbach in 1991. closely related to closure analysis for functional programs (Jones,Shivers). Fast interprocedural class analysis by node(set variable) merging Grove and Chambers in ACM POPL’98

Objects and Methods in Java class C { int n; void incr() { n++; } void decr() { n--; } } Method invocation: [[e.m(arg)]] = object * o = [[e]]; lookup(o®vtable, m)(o, [[arg]]) method table void C::incr(this) { this.n++; g} object incr decr Value of n void C::decr(this) { this.n--; }

Objects and Methods in Java Layout of method tables attached to objects based on inheritance hierarchies Transformation of method invocations into method lookups + calls. We can generate a direct call c.m using analysis if that set is a singleton {c} or if all elements in that set have the same implementation of method m

Simpler Class Analyses

CHA(Class Hierarchy Analysis) 클래스 계층구조 정보를 고려한다. 호출 그래프 각 메쏘드 호출 x.m(…) x의 타입 정보 및 클래스 계층구조

RTA(Rapid Type Analysis) 기본 아이디어 클래스 생성(instantiation) 정보를 이용하여 CHA 확장 프로그램 P에 대해서 하나의 집합-변수 Xp 프로그램 내에서 이용 가능한 (추상) 객체들을 포함 호출 그래프 각 메쏘드 호출 x.m(…) x의 타입 정보, 클래스 계층구조와 Xp 이용

XTA 기본 아이디어 호출 그래프 각 메쏘드 M 마다 하나의 집합-변수 XM 각 필드 변수 x 마다 하나의 집합-변수 Xx x의 타입 정보, 클래스 계층구조 와 XM 이용

VTA(Variable Type Analysis) 기본 아이디어 각 참조 변수 x 마다 하나의 집합-변수 Xx 참조 변수 x 가 가리키는 모든 객체 포함 호출 그래프 메쏘드 메쏘드 호출 x.m(…) x의 타입 정보, 클래스 계층구조 와 Xx 이용

Points-to Analysis