Flex Compiler Compiler Case Study By Mee Ka Chang.

Slides:



Advertisements
Similar presentations
1 Copyright © 2005, Oracle. All rights reserved. Introducing the Java and Oracle Platforms.
Advertisements

Compilation 2011 Static Analysis Johnni Winther Michael I. Schwartzbach Aarhus University.
Program Representations. Representing programs Goals.
The Java Language. Topics of this Course  Introduction to Java  The Java Language  Object Oriented Programming in Java  Exceptions Handling  Threads.
Modern Compiler Internal Representations Silvius Rus 1/23/2002.
1 Intermediate representation Goals: –encode knowledge about the program –facilitate analysis –facilitate retargeting –facilitate optimization scanning.
Java for High Performance Computing Jordi Garcia Almiñana 14 de Octubre de 1998 de la era post-internet.
Laboratory for Computer Science Massachusetts Institute of Technology Ownership Types for Safe Region-Based Memory Management in Real-Time Java Chandrasekhar.
Reference Book: Modern Compiler Design by Grune, Bal, Jacobs and Langendoen Wiley 2000.
JVM-1 Introduction to Java Virtual Machine. JVM-2 Outline Java Language, Java Virtual Machine and Java Platform Organization of Java Virtual Machine Garbage.
A Static Analysis Framework For Embedded Systems Nathan Cooprider John Regehr's Embedded Systems Group.
1 Programming Languages Translation  Lecture Objectives:  Be able to list and explain five features of the Java programming language.  Be able to explain.
Recap from last time: live variables x := 5 y := x + 2 x := x + 1 y := x y...
ARM C Language & Assembler. Using C instead of Java (or Python, or your other favorite language)? C is the de facto standard for embedded systems because.
Toba Gregg M. Townsend Executable Code from Java Source.
1 Software Testing and Quality Assurance Lecture 31 – SWE 205 Course Objective: Basics of Programming Languages & Software Construction Techniques.
Introduction to Java.
Memory Management for Real-Time Java Wes Beebee and Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Supported by: DARPA.
COP4020 Programming Languages
Session-02. Objective In this session you will learn : What is Class Loader ? What is Byte Code Verifier? JIT & JAVA API Features of Java Java Environment.
Peter Juszczyk CS 492/493 - ISGS. // Is this C# or Java? class TestApp { static void Main() { int counter = 0; counter++; } } The answer is C# - In C#
LLVM Developed by University of Illinois at Urbana-Champaign CIS dept Cisc 471 Matthew Warner.
Embedded Java Research Geoffrey Beers Peter Jantz December 18, 2001.
JAVA v.s. C++ Programming Language Comparison By LI LU SAMMY CHU By LI LU SAMMY CHU.
Effective C# 50 Specific Way to Improve Your C# Item 50 Scott68.Chang.
Language Systems Chapter FourModern Programming Languages 1.
P ARALLEL P ROCESSING I NSTITUTE · F UDAN U NIVERSITY 1.
Fast, Effective Code Generation in a Just-In-Time Java Compiler Rejin P. James & Roshan C. Subudhi CSE Department USC, Columbia.
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT Optimizing Compilers CISC 673 Spring 2011 Course Overview John Cavazos University.
MIPS coding. SPIM Some links can be found such as:
Java Introduction Lecture 1. Java Powerful, object-oriented language Free SDK and many resources at
1 Module Objective & Outline Module Objective: After completing this Module, you will be able to, appreciate java as a programming language, write java.
1 Introduction to JVM Based on material produced by Bill Venners.
Introduction and Features of Java. What is java? Developed by Sun Microsystems (James Gosling) A general-purpose object-oriented language Based on C/C++
CS266 Software Reverse Engineering (SRE) Reversing and Patching Java Bytecode Teodoro (Ted) Cipresso,
Netprog: Java Intro1 Crash Course in Java. Netprog: Java Intro2 Why Java? Network Programming in Java is very different than in C/C++ –much more language.
1.  10% Assignments/ class participation  10% Pop Quizzes  05% Attendance  25% Mid Term  50% Final Term 2.
Component Composition for Embedded Systems Using Semantic Aspect-Oriented Programming Martin Rinard Laboratory for Computer Science Massachusetts Institute.
Java Security Model For Mobile Code Abdo Achkar. Mobile Code A mobile object is a “self contained piece” of executable code. Definition:  Code that can.
What Is Java? According to Sun in a white paper: Java: A simple, object-oriented, network-savvy, interpreted, robust, secure, architecture-neutral, portable,
Compressed Abstract Syntax Trees as Mobile Code Christian H. Stork Vivek Haldar University of California, Irvine.
LANGUAGE SYSTEMS Chapter Four Modern Programming Languages 1.
Computer Programming 2 Why do we study Java….. Java is Simple It has none of the following: operator overloading, header files, pre- processor, pointer.
Static Single Assignment Form in the COINS Compiler Infrastructure Masataka Sassa, Toshiharu Nakaya, Masaki Kohama, Takeaki Fukuoka and Masahito Takahashi.
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT Optimizing Compilers CISC 673 Spring 2009 Overview of Compilers and JikesRVM John.
Core Java Introduction Byju Veedu Ness Technologies httpdownload.oracle.com/javase/tutorial/getStarted/intro/definition.html.
1. An Introduction A Programming Language A Technology Java Development Kit Java API One Language: Three Editions Standard Edition Enterprise Edition.
 Programming - the process of creating computer programs.
1 Compiler & its Phases Krishan Kumar Asstt. Prof. (CSE) BPRCE, Gohana.
CSE 598c – Virtual Machines Survey Proposal: Improving Performance for the JVM Sandra Rueda.
By: Cheryl Mok & Sarah Tan. Java is partially interpreted. 1. Programmer writes a program in textual form 2. Runs the compiler, which converts the textual.
Common Language Runtime Introduction  The common language runtime is one of the most essential component of the.Net Framework.  It acts.
Vertical Profiling : Understanding the Behavior of Object-Oriented Applications Sookmyung Women’s Univ. PsLab Sewon,Moon.
Design-Directed Programming Martin Rinard Daniel Jackson MIT Laboratory for Computer Science.
A Microsoft.NET Front-End for GCC Bernhard Rabe Martin von Löwis Jan Möller Operating Systems & Middleware Group Hasso-Plattner-Institute, University of.
Eliminating External Fragmentation in a Non-Moving Garbage Collector for Java Author: Fridtjof Siebert, CASES 2000 Michael Sallas Object-Oriented Languages.
Sung-Dong Kim, Dept. of Computer Engineering, Hansung University Java - Introduction.
A Single Intermediate Language That Supports Multiple Implemtntation of Exceptions Delvin Defoe Washington University in Saint Louis Department of Computer.
Before You Begin Nahla Abuel-ola /WIT.
Interpreted languages Jakub Yaghob
Compositional Pointer and Escape Analysis for Java Programs
Introduction Enosis Learning.
Advanced Compilers CMPSCI 710 Spring 2003 Lecture 1
Introduction Enosis Learning.
“just-in-time” compilation (JIT) technique prepared by - Harshada Hole
Java History, Editions, Version Features
CSC 253 Lecture 2.
Optimizing Compilers CISC 673 Spring 2009 Course Overview
Presentation transcript:

Flex Compiler Compiler Case Study By Mee Ka Chang

Flex Compiler FLEX is a product of the Program Analysis and Compilation Group at MIT.Program Analysis and Compilation Group Current Team Martin Rinard C. Scott Ananian Chandrasekhar Boyapati Brian Demsky Viktor Kuncak Patrick Lam Darko Marinov Alex Salcianu Karen Zee Wes Beebee FLEX is a compiler infrastructure written in Java for Java. Applications include a program analysis and transformation framework for distributed and embedded systems. Native backends exist for the StrongARM and MIPS processors. Generate portable C code that can run on any platform with gcc.

Architecture The compiler front-end translates Java bytecode files into a class-oriented intermediate representation which is intended to be easier to analyze and manipulate than bytecode assembly language. The intermediate representation is control-flow-graph structured, with all control flow explicit, and use static single-assignment(SSA).

Research SSA form, static single-assignment form is used, instead of a def-use chain, where the compiler keep a list of pointers to all the use sites of variables defined there, and a list of pointers to all definition sites of the variables used. SSA form is an intermediate representation in which each variable has only one definition in the program text. The one (static) definition-site may be in a loop that is executed many dynamic times. The Flex compiler system was used as a platform for pointer and escape analysis research. SSA form where each variable is statically define with useful information, and can help reduce analysis cost. A benefit of the SSA form is that unrelated uses of the same variable in the source become different variables in SSA form, eliminating false dependencies. But it becomes more difficult with branching. Exception handling in the Java language complicates control-flow, from operations implicitly throwing exceptions To facilitate analysis, exception handling and its associated control-flow is made explicit in the intermediate representation. (Null pointer and array bounds checks are inserted before object and array references)

Development Support Boehm-Demers-Weiser conservative garbage collection and their own precise garbage collector. Support region-based allocation via their implementation of the Real-Time Specification for Java. Supports several implementations of the standard Java threads package and lightweight user-level implementation. Provides a range of standard compiler analyses and optimizations, as well as unique optimizations for embedded targets, including space optimization. “ Currently the site does not specifically state any planned future enhancements.

Sources compiler.csail.mit.edu/Harpoon/quads/quads. pdf