Tachyon: a Meta-circular Optimizing JavaScript Virtual Machine
|
|
|
- Angelina Newman
- 10 years ago
- Views:
Transcription
1 Tachyon: a Meta-circular Optimizing JavaScript Virtual Machine Maxime Chevalier-Boisvert Erick Lavoie Marc Feeley Bruno Dufour {chevalma, lavoeric, feeley, dufour}@iro.umontreal.ca DIRO - Université de Montréal
2 About the Tachyon Project Began in summer 2010 Compiler lab at UdeM Two students: Erick Lavoie (M.Sc.) Maxime Chevalier-Boisvert (Ph.D.) Professor Marc Feeley Gambit Scheme Professor Bruno Dufour Dynamic program analysis Big project, because we like challenges 2
3 What's JavaScript? JavaScript Java in the browser Dynamic (scripting) language Dynamic typing No type annotations Dynamic source loading, eval Basic types include: Doubles (no int!), strings, booleans, objects, arrays, firstclass functions Objects as hash maps Can add/remove properties at any time Prototype-based, no classes 3
4 Why JavaScript? JavaScript is very popular, it's everywhere JavaScript is the only language for web applications. Volume of JS code increasing fast, becoming more complex Many competing implementations Push to move desktop apps to browsers Performance is insufficient Compiling dynamic languages efficiently is challenging Dynamic typing, eval, etc Researchers definitely care! 4
5 State of the Art Firefox / JaegerMonkey Tracing JIT Compiles/specializes loop code traces Chrome / V8 Hidden classes Inline caches, code patching Very fast JIT compiler Very efficient GC Is this the best we can do? We believe there is potential for more optimization 5
6 Our Objectives Full JavaScript (ECMAScript 5) support Retargetable JIT compiler (x86, x86-64) Meta-circularity of the VM Framework for dynamic language optimizations Better object representations Optimistic optimization w/ recompilation Fast & efficient x86 back-end Integration into a web-browser Demonstrate viability on real applications Free software / OSS 6
7 Meta-circularity Have your compiler compile itself Less external dependencies Forces you to test/debug Self-optimization Less optimization boundaries Fairly straightforward for a traditional static compiler (e.g.: gcc) Tricky for our virtual machine Runtime support (on which VM does the VM run?) Performance issues, self-optimization Dynamic loading, dynamic constructs 7
8 Bootstrap 8
9 JavaScript Extensions JavaScript has no access to raw memory Essential to implement a VM/JIT Tachyon is written in JS w/ unsafe extensions Minimizes the need to write C code (FFI) Maximizes performance FFIs are optimization boundaries JS code translated to low-level typed IR JS extensions: insert typed instructions in code as it is translated (Inline IR / IIR) 9
10 /** Test if a boxed value is integer */ function boxisint(boxval) { "tachyon:inline"; "tachyon:nothrow"; "tachyon:ret bool"; } // Test if the value has the int tag return (boxval & TAG_INT_MASK) == TAG_INT; 10
11 /** Implementation of HIR less than instruction */ function lt(v1, v2) { "tachyon:inline"; "tachyon:nothrow"; // If both values are immediate integers if (boxisint(v1) && boxisint(v2)) { // Compare immediate integers without unboxing var tv = iir.lt(v1, v2); } else { // Call a function for the general case var tv = ltgeneral(v1, v2); } } return tv? true:false; 11
12 Intermediate Representation Inspired from LLVM SSA-based Type-annotated Integers, floats, booleans, raw pointers Boxed values Low-level Mirrors instructions commonly found on most CPUs add/sub/mul/div, and/or/shift, jump/if/call, load/store, etc. Allows expressing more optimizations (specialization) 12
13 Optimistic Optimizations Traditional optimizations are conservative Can't prove it, can't do it Dynamic languages offer little static type information Dynamic constructs problematic for analysis eval, load Often can't prove validity conservatively Optimistic optimizations Valid now, assume valid until proven otherwise Most dynamic programs not that dynamic Many optimizations do apply 13
14 Example: Optimization Issues function sum(list) { var sum = 0; for (var i = 0; i < list.length; ++i) sum += f(list[i]); return sum; } function f(v) { return v*v; } print(sum([1,2,3,4,5])); Don't know type of list and its elements Dynamic type checks needed Name f is global, can be redefined Fetch from global object, is-function check needed Can't trivially perform inlining What if we add an eval? 14
15 Realistic Assumptions As programmers, it's fairly obvious to us that: function f is extremely unlikely to be redefined list will likely always be array of integers Not obvious to a compiler, but, in general: How often are global functions redefined? How many call sites are truly polymorphic? How many function arguments can have more than one type? How often do people use eval to change local variable types? 15
16 What Would Tachyon Do (WWTD)? A VM can observe the types of global variables as a program is executing Can assume that these types will not change e.g.: assume that f() will not be redefined Compile functions with these assumptions A VM can observe what types input arguments to a function have Can specialize functions based on these e.g.: sum(list) is always called with arrays of integers Types inside of function bodies can be inferred from types of globals and arguments Type propagation, simple dataflow analysis 16
17 Naïve JavaScript Compilation 17
18 What Would Tachyon Do (WWTD)? 18
19 What Would Tachyon Do (WWTD)? 19
20 Key Ideas Crucial to capture info about run time behavior Program needs to be correct at all times Don't need to run the same code at all times Multiple optimized versions correct at different times Can make optimistic assumptions that may be invalidated later So long as we can repair our mistakes in time Code with broken assumptions must never be executed Ideally, want invalidation to be unlikely 20
21 Type Profiling Type profiling can observe: Frequency of calls Types of arguments to calls Types of values stored into globals Types of values stored in object fields Goal: build fairly accurate profile of program behavior w.r.t. types 21
22 Type Propagation Form of type inference Dataflow analysis Local or whole program Rules depend on language semantics, e.g.: add int, int int add float, float float mul m4x2, m2x1 m4x1 getprop o, a prop_type(o, a ) In the local case, inputs are function argument types, globals types, closure variable types Output: local variable types, return type 22
23 Potential Difficulties Cost of profiling Need accurate information Cost of recompilation Usage of external threads Frequency of recompilation Progressive pessimization Inherent complexity Find more students! 23
24 Related work: Type Analysis M Chevalier-Boisvert, L Hendren, C Verbrugge. Optimizing MATLAB through just-in-time specialization. CC F Logozzo, H Venter. RATA: Rapid Atomic Type Analysis by Abstract Interpretation Application to JavaScript Optimization. CC S Jensen, A Møller et al. Type analysis for JavaScript. SAS And much more... 24
25 Related work: Deoptimization I Pechtchanski, V Sarkar. Dynamic optimistic interprocedural analysis: a framework and an application. OOPSLA Systematic optimistic interprocedural type analysis to optimize polymorphic call sites Speculative inlining In Java, dynamic class loading can invalidate inlining decisions Implemented in Java HotSpot VM Polymorphic inline cache 25
26 Related work: Tracing JITs HotpathVM, TraceMonkey, LuaJIT, etc. Tracing JITs are another dynamic compilation model Same basic underlying principle Observe program as it runs, gather data about behavior Assume current behavior will likely persist, use data to specialize program, minimize dynamic checks Main limitations Local approach, detects & examines loops Knows little about what goes on outside loops No real way of dealing with global data, optimizing object layout, etc. 26
27 Related work: Meta-circularity JikesRVM: meta-circular Java VM Maxine VM: experimental project at Sun PyPy: Python in Python JIT compiler generator based on language spec. Klein VM: Implementation of Self in Self 27
28 Distinguishing Features Meta-circular w/ dynamic language Self-optimizing Systematic optimistic optimizations Implementation flexibility Function call protocol Object layout Intermediate representation Inline IR Multithreaded compiler 28
29 Project Status Working: ECMAScript 5 parser Translation of ASTs to SSA-based IR Simple optimizations on IR SCCP, value numbering, peepholes x86 32/64 back-end w/ linear-scan reg. alloc. Compilation of simple programs Fibonacci, loops Precise statistical profiler In progress: Library of JS primitives (objects, strings) Compilation of more complex programs Back-end optimizations Integration into Chrome 29
30 Thanks for Listening! We welcome your questions/comments Feel free to contact the Tachyon team: {chevalma, lavoeric, feeley, 30
JavaScript as a compilation target Making it fast
JavaScript as a compilation target Making it fast Florian Loitsch, Google Who am I? Florian Loitsch, software engineer at Google Projects Scheme2Js - Scheme-to-JavaScript compiler Js2scheme - JavaScript-to-Scheme
PARALLEL JAVASCRIPT. Norm Rubin (NVIDIA) Jin Wang (Georgia School of Technology)
PARALLEL JAVASCRIPT Norm Rubin (NVIDIA) Jin Wang (Georgia School of Technology) JAVASCRIPT Not connected with Java Scheme and self (dressed in c clothing) Lots of design errors (like automatic semicolon
Virtual Machine Learning: Thinking Like a Computer Architect
Virtual Machine Learning: Thinking Like a Computer Architect Michael Hind IBM T.J. Watson Research Center March 21, 2005 CGO 05 Keynote 2005 IBM Corporation What is this talk about? Virtual Machines? 2
EMSCRIPTEN - COMPILING LLVM BITCODE TO JAVASCRIPT (?!)
EMSCRIPTEN - COMPILING LLVM BITCODE TO JAVASCRIPT (?!) ALON ZAKAI (MOZILLA) @kripken JavaScript..? At the LLVM developer's conference..? Everything compiles into LLVM bitcode The web is everywhere, and
Language Based Virtual Machines... or why speed matters. by Lars Bak, Google Inc
Language Based Virtual Machines... or why speed matters by Lars Bak, Google Inc Agenda Motivation for virtual machines HotSpot V8 Dart What I ve learned Background 25+ years optimizing implementations
LLVM for OpenGL and other stuff. Chris Lattner Apple Computer [email protected]
LLVM for OpenGL and other stuff Chris Lattner Apple Computer [email protected] OpenGL JIT OpenGL Vertex/Pixel Shaders OpenGL Pixel/Vertex Shaders Small program, provided at run-time, to be run on each
Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters
Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.
An Object Storage Model for the Truffle Language Implementation Framework
An Object Storage Model for the Truffle Language Implementation Framework Andreas Wöß Christian Wirth Daniele Bonetta Chris Seaton Christian Humer Hanspeter Mössenböck Institute for System Software, Johannes
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming Java has become enormously popular. Java s rapid rise and wide acceptance can be traced to its design
General Introduction
Managed Runtime Technology: General Introduction Xiao-Feng Li ([email protected]) 2012-10-10 Agenda Virtual machines Managed runtime systems EE and MM (JIT and GC) Summary 10/10/2012 Managed Runtime
Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16
Advanced compiler construction Michel Schinz 2007 03 16 General course information Teacher & assistant Course goals Teacher: Michel Schinz [email protected] Assistant: Iulian Dragos INR 321, 368 64
The V8 JavaScript Engine
The V8 JavaScript Engine Design, Implementation, Testing and Benchmarking Mads Ager, Software Engineer Agenda Part 1: What is JavaScript? Part 2: V8 internals Part 3: V8 testing and benchmarking What is
Compiling Object Oriented Languages. What is an Object-Oriented Programming Language? Implementation: Dynamic Binding
Compiling Object Oriented Languages What is an Object-Oriented Programming Language? Last time Dynamic compilation Today Introduction to compiling object oriented languages What are the issues? Objects
1. Overview of the Java Language
1. Overview of the Java Language What Is the Java Technology? Java technology is: A programming language A development environment An application environment A deployment environment It is similar in syntax
Habanero Extreme Scale Software Research Project
Habanero Extreme Scale Software Research Project Comp215: Java Method Dispatch Zoran Budimlić (Rice University) Always remember that you are absolutely unique. Just like everyone else. - Margaret Mead
Lecture 1 Introduction to Android
These slides are by Dr. Jaerock Kwon at. The original URL is http://kettering.jrkwon.com/sites/default/files/2011-2/ce-491/lecture/alecture-01.pdf so please use that instead of pointing to this local copy
Crash Course in Java
Crash Course in Java Based on notes from D. Hollinger Based in part on notes from J.J. Johns also: Java in a Nutshell Java Network Programming and Distributed Computing Netprog 2002 Java Intro 1 What is
Jonathan Worthington Scarborough Linux User Group
Jonathan Worthington Scarborough Linux User Group Introduction What does a Virtual Machine do? Hides away the details of the hardware platform and operating system. Defines a common set of instructions.
A Typing System for an Optimizing Multiple-Backend Tcl Compiler
The following paper was originally published in the Proceedings of the Fifth Annual Tcl/Tk Workshop Boston, Massachusetts, July 1997 A Typing System for an Optimizing Multiple-Backend Tcl Compiler Forest
Pluggable Type Systems. Gilad Bracha
Pluggable Type Systems Gilad Bracha The Paradox of Type Systems Type systems help reliability and security by mechanically proving program properties Type systems hurt reliability and security by making
Instruction Set Architecture (ISA)
Instruction Set Architecture (ISA) * Instruction set architecture of a machine fills the semantic gap between the user and the machine. * ISA serves as the starting point for the design of a new machine
MYPY: A PYTHON VARIANT WITH SEAMLESS DYNAMIC AND STATIC TYPING. Jukka Lehtosalo University of Cambridge Computer Laboratory
MYPY: A PYTHON VARIANT WITH SEAMLESS DYNAMIC AND STATIC TYPING Jukka Lehtosalo University of Cambridge Computer Laboratory SPEAKER BIO 2000-2006 Software engineer (QPR Software and Kielikone) 2007-2009
Modern Web Development with Dart. Alan Knight Google
Modern Web Development with Dart Alan Knight Google Smalltalk Industry Conference 2013 The Web As an application platform We want... Large, extensible widget set Simple, clean APIs Model/View separation
Fachbereich Informatik und Elektrotechnik SunSPOT. Ubiquitous Computing. Ubiquitous Computing, Helmut Dispert
Ubiquitous Computing Ubiquitous Computing The Sensor Network System Sun SPOT: The Sun Small Programmable Object Technology Technology-Based Wireless Sensor Networks a Java Platform for Developing Applications
Wiggins/Redstone: An On-line Program Specializer
Wiggins/Redstone: An On-line Program Specializer Dean Deaver Rick Gorton Norm Rubin {dean.deaver,rick.gorton,norm.rubin}@compaq.com Hot Chips 11 Wiggins/Redstone 1 W/R is a Software System That: u Makes
Understanding Hardware Transactional Memory
Understanding Hardware Transactional Memory Gil Tene, CTO & co-founder, Azul Systems @giltene 2015 Azul Systems, Inc. Agenda Brief introduction What is Hardware Transactional Memory (HTM)? Cache coherence
The P3 Compiler: compiling Python to C++ to remove overhead
The P3 Compiler: compiling Python to C++ to remove overhead Jared Pochtar 1. Introduction Python is a powerful, modern language with many features that make it attractive to programmers. As a very high
1 The Java Virtual Machine
1 The Java Virtual Machine About the Spec Format This document describes the Java virtual machine and the instruction set. In this introduction, each component of the machine is briefly described. This
Evolution of the Major Programming Languages
142 Evolution of the Major Programming Languages Object Oriented Programming: Smalltalk Object-Oriented: It s fundamental characteristics are: Data abstraction, Inheritance and Dynamic Binding. The essence
Portable and Efficient Run-time Monitoring of JavaScript Applications using Virtual Machine Layering
Portable and Efficient Run-time Monitoring of JavaScript Applications using Virtual Machine Layering Erick Lavoie 1, Bruno Dufour 2, and Marc Feeley 2 1 McGill University, Montreal, Canada [email protected]
An Easier Way for Cross-Platform Data Acquisition Application Development
An Easier Way for Cross-Platform Data Acquisition Application Development For industrial automation and measurement system developers, software technology continues making rapid progress. Software engineers
Moving from CS 61A Scheme to CS 61B Java
Moving from CS 61A Scheme to CS 61B Java Introduction Java is an object-oriented language. This document describes some of the differences between object-oriented programming in Scheme (which we hope you
Language Processing Systems
Language Processing Systems Evaluation Active sheets 10 % Exercise reports 30 % Midterm Exam 20 % Final Exam 40 % Contact Send e-mail to [email protected] Course materials at www.u-aizu.ac.jp/~hamada/education.html
CSCI E 98: Managed Environments for the Execution of Programs
CSCI E 98: Managed Environments for the Execution of Programs Draft Syllabus Instructor Phil McGachey, PhD Class Time: Mondays beginning Sept. 8, 5:30-7:30 pm Location: 1 Story Street, Room 304. Office
Trace-based Just-in-Time Type Specialization for Dynamic Languages
Trace-based Just-in-Time Type Specialization for Dynamic Languages Andreas Gal +, Brendan Eich, Mike Shaver, David Anderson, David Mandelin, Mohammad R. Haghighat $, Blake Kaplan, Graydon Hoare, Boris
One VM to Rule Them All
One VM to Rule Them All Thomas Würthinger Christian Wimmer Andreas Wöß Lukas Stadler illes Duboscq Christian Humer regor Richards Doug Simon Mario Wolczko Oracle Labs nstitute for System Software, Johannes
How to make the computer understand? Lecture 15: Putting it all together. Example (Output assembly code) Example (input program) Anatomy of a Computer
How to make the computer understand? Fall 2005 Lecture 15: Putting it all together From parsing to code generation Write a program using a programming language Microprocessors talk in assembly language
HOTPATH VM. An Effective JIT Compiler for Resource-constrained Devices
HOTPATH VM An Effective JIT Compiler for Resource-constrained Devices based on the paper by Andreas Gal, Christian W. Probst and Michael Franz, VEE 06 INTRODUCTION INTRODUCTION Most important factor: speed
Usable Crypto: Introducing minilock. Nadim Kobeissi HOPE X, NYC, 2014
Usable Crypto: Introducing minilock Nadim Kobeissi HOPE X, NYC, 2014 2012 Browsers are an environment that is hostile to cryptography Malleability of the JavaScript runtime. The lack of low-level (system-level)
A Thread Monitoring System for Multithreaded Java Programs
A Thread Monitoring System for Multithreaded Java Programs Sewon Moon and Byeong-Mo Chang Department of Computer Science Sookmyung Women s University, Seoul 140-742, Korea [email protected], [email protected]
Organization of Programming Languages CS320/520N. Lecture 05. Razvan C. Bunescu School of Electrical Engineering and Computer Science bunescu@ohio.
Organization of Programming Languages CS320/520N Razvan C. Bunescu School of Electrical Engineering and Computer Science [email protected] Names, Bindings, and Scopes A name is a symbolic identifier used
1/20/2016 INTRODUCTION
INTRODUCTION 1 Programming languages have common concepts that are seen in all languages This course will discuss and illustrate these common concepts: Syntax Names Types Semantics Memory Management We
Mobile Web Design with HTML5, CSS3, JavaScript and JQuery Mobile Training BSP-2256 Length: 5 days Price: $ 2,895.00
Course Page - Page 1 of 12 Mobile Web Design with HTML5, CSS3, JavaScript and JQuery Mobile Training BSP-2256 Length: 5 days Price: $ 2,895.00 Course Description Responsive Mobile Web Development is more
picojava TM : A Hardware Implementation of the Java Virtual Machine
picojava TM : A Hardware Implementation of the Java Virtual Machine Marc Tremblay and Michael O Connor Sun Microelectronics Slide 1 The Java picojava Synergy Java s origins lie in improving the consumer
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages. Corky Cartwright Swarat Chaudhuri November 30, 20111
Comp 411 Principles of Programming Languages Lecture 34 Semantics of OO Languages Corky Cartwright Swarat Chaudhuri November 30, 20111 Overview I In OO languages, data values (except for designated non-oo
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm
Dart a modern web language
Dart a modern web language or why web programmers need more structure Kasper Lund & Lars Bak Software engineers, Google Inc. Object-oriented language experience: 26 + 12 years The Web Is Fantastic The
Object Oriented Database Management System for Decision Support System.
International Refereed Journal of Engineering and Science (IRJES) ISSN (Online) 2319-183X, (Print) 2319-1821 Volume 3, Issue 6 (June 2014), PP.55-59 Object Oriented Database Management System for Decision
Write Barrier Removal by Static Analysis
Write Barrier Removal by Static Analysis Karen Zee and Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Cambridge, MA 02139 {kkz, [email protected] ABSTRACT We present
The programming language C. sws1 1
The programming language C sws1 1 The programming language C invented by Dennis Ritchie in early 1970s who used it to write the first Hello World program C was used to write UNIX Standardised as K&C (Kernighan
Chapter 6: Programming Languages
Chapter 6: Programming Languages Computer Science: An Overview Eleventh Edition by J. Glenn Brookshear Copyright 2012 Pearson Education, Inc. Chapter 6: Programming Languages 6.1 Historical Perspective
Precise and Efficient Garbage Collection in VMKit with MMTk
Precise and Efficient Garbage Collection in VMKit with MMTk LLVM Developer s Meeting Nicolas Geoffray [email protected] 2 Background VMKit: Java and.net on top of LLVM Uses LLVM s JIT for executing
An Overview of Java. overview-1
An Overview of Java overview-1 Contents What is Java Major Java features Java virtual machine Java programming language Java class libraries (API) GUI Support in Java Networking and Threads in Java overview-2
Fast JavaScript in V8. The V8 JavaScript Engine. ...well almost all boats. Never use with. Never use with part 2.
Fast JavaScript in V8 Erik Corry Google The V8 JavaScript Engine A from-scratch reimplementation of the ECMAScript 3 language An Open Source project from Google, primarily developed here in Århus A real
From Bytecode to Javascript: the Js of ocaml Compiler
From Bytecode to Javascript: the Js of ocaml Compiler Jérôme Vouillon PPS, University Paris Diderot and CNRS [email protected] Vincent Balat PPS, University Paris Diderot and INRIA [email protected]
Chapter 15 Functional Programming Languages
Chapter 15 Functional Programming Languages Introduction - The design of the imperative languages is based directly on the von Neumann architecture Efficiency (at least at first) is the primary concern,
Fast and Precise Hybrid Type Inference for JavaScript
Fast and Precise Hybrid Type Inference for JavaScript Brian Hackett Shu-yu Guo Mozilla {bhackett,shu}@mozilla.com Abstract JavaScript performance is often bound by its dynamically typed nature. Compilers
CS 51 Intro to CS. Art Lee. September 2, 2014
CS 51 Intro to CS Art Lee September 2, 2014 Announcements Course web page at: http://www.cmc.edu/pages/faculty/alee/cs51/ Homework/Lab assignment submission on Sakai: https://sakai.claremont.edu/portal/site/cx_mtg_79055
C# and Other Languages
C# and Other Languages Rob Miles Department of Computer Science Why do we have lots of Programming Languages? Different developer audiences Different application areas/target platforms Graphics, AI, List
CSE 130 Programming Language Principles & Paradigms
CSE 130 Programming Language Principles & Paradigms Thomas A. Powell [email protected] Housekeeping Syllabus review Direct class page link http://www.pint.com/classes/cse130 Updated syllabus, notes, homework
A Static Analyzer for Large Safety-Critical Software. Considered Programs and Semantics. Automatic Program Verification by Abstract Interpretation
PLDI 03 A Static Analyzer for Large Safety-Critical Software B. Blanchet, P. Cousot, R. Cousot, J. Feret L. Mauborgne, A. Miné, D. Monniaux,. Rival CNRS École normale supérieure École polytechnique Paris
How To Write Portable Programs In C
Writing Portable Programs COS 217 1 Goals of Today s Class Writing portable programs in C Sources of heterogeneity Data types, evaluation order, byte order, char set, Reading period and final exam Important
CSCI 3136 Principles of Programming Languages
CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University Winter 2013 CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University
Program Analysis for JavaScript Challenges and Techniques
Program Analysis for JavaScript Challenges and Techniques Anders Møller Center for Advanced Software Analysis Aarhus University Joint work with Esben Andreasen, Simon Holm Jensen, Peter A. Jonsson, Magnus
language 1 (source) compiler language 2 (target) Figure 1: Compiling a program
CS 2112 Lecture 27 Interpreters, compilers, and the Java Virtual Machine 1 May 2012 Lecturer: Andrew Myers 1 Interpreters vs. compilers There are two strategies for obtaining runnable code from a program
Semantic Analysis: Types and Type Checking
Semantic Analysis Semantic Analysis: Types and Type Checking CS 471 October 10, 2007 Source code Lexical Analysis tokens Syntactic Analysis AST Semantic Analysis AST Intermediate Code Gen lexical errors
Simply type the id# in the search mechanism of ACS Skills Online to access the learning assets outlined below.
Programming Practices Learning assets Simply type the id# in the search mechanism of ACS Skills Online to access the learning assets outlined below. Titles Debugging: Attach the Visual Studio Debugger
Understanding and Detec.ng Real- World Performance Bugs
Understanding and Detec.ng Real- World Performance Bugs Gouliang Jin, Linhai Song, Xiaoming Shi, Joel Scherpelz, and Shan Lu Presented by Cindy Rubio- González Feb 10 th, 2015 Mo.va.on Performance bugs
Týr: a dependent type system for spatial memory safety in LLVM
Týr: a dependent type system for spatial memory safety in LLVM Vítor De Araújo Álvaro Moreira (orientador) Rodrigo Machado (co-orientador) August 13, 2015 Vítor De Araújo Álvaro Moreira (orientador) Týr:
Extending Tizen Native Framework with Node.js
Extending Tizen Native Framework with Node.js Nishant Deshpande Hyunju Shin Ph.D. Samsung Electronics Contents Native or Web? Why JavaScript, Node.js? Proposed Architecture Sample Applications Going Forward
C Compiler Targeting the Java Virtual Machine
C Compiler Targeting the Java Virtual Machine Jack Pien Senior Honors Thesis (Advisor: Javed A. Aslam) Dartmouth College Computer Science Technical Report PCS-TR98-334 May 30, 1998 Abstract One of the
Compilers. Introduction to Compilers. Lecture 1. Spring term. Mick O Donnell: [email protected] Alfonso Ortega: alfonso.ortega@uam.
Compilers Spring term Mick O Donnell: [email protected] Alfonso Ortega: [email protected] Lecture 1 to Compilers 1 Topic 1: What is a Compiler? 3 What is a Compiler? A compiler is a computer
TATJA: A Test Automation Tool for Java Applets
TATJA: A Test Automation Tool for Java Applets Matthew Xuereb 19, Sanctuary Street, San Ġwann [email protected] Abstract Although there are some very good tools to test Web Applications, such tools neglect
The Clean programming language. Group 25, Jingui Li, Daren Tuzi
The Clean programming language Group 25, Jingui Li, Daren Tuzi The Clean programming language Overview The Clean programming language first appeared in 1987 and is still being further developed. It was
CS 111 Classes I 1. Software Organization View to this point:
CS 111 Classes I 1 Software Organization View to this point: Data Objects and primitive types Primitive types operators (+, /,,*, %). int, float, double, char, boolean Memory location holds the data Objects
The C Programming Language course syllabus associate level
TECHNOLOGIES The C Programming Language course syllabus associate level Course description The course fully covers the basics of programming in the C programming language and demonstrates fundamental programming
Sources: On the Web: Slides will be available on:
C programming Introduction The basics of algorithms Structure of a C code, compilation step Constant, variable type, variable scope Expression and operators: assignment, arithmetic operators, comparison,
Developing a Web Server Platform with SAPI Support for AJAX RPC using JSON
Revista Informatica Economică, nr. 4 (44)/2007 45 Developing a Web Server Platform with SAPI Support for AJAX RPC using JSON Iulian ILIE-NEMEDI, Bucharest, Romania, [email protected] Writing a custom web
CARAMEL: Detecting and Fixing Performance Problems That Have Non-Intrusive Fixes
CARAMEL: Detecting and Fixing Performance Problems That Have Non-Intrusive Fixes Adrian Nistor 1, Po-Chun Chang 2, Cosmin Radoi 3, Shan Lu 4 1 Chapman University, 2 University of Wisconsin Madison, 3 University
Change Impact Analysis
Change Impact Analysis Martin Ward Reader in Software Engineering [email protected] Software Technology Research Lab De Montfort University Change Impact Analysis Impact analysis is a process that predicts
Can You Trust Your JVM Diagnostic Tools?
Can You Trust Your JVM Diagnostic Tools? Isaac Sjoblom, Tim S. Snyder, and Elena Machkasova Computer Science Discipline University of Minnesota Morris Morris, MN 56267 [email protected], [email protected],
Static Taint-Analysis on Binary Executables
Static Taint-Analysis on Binary Executables Sanjay Rawat, Laurent Mounier, Marie-Laure Potet VERIMAG University of Grenoble October 2011 Static Taint-Analysis on Binary Executables 1/29 Outline 1 Introduction
Chapter 1. Dr. Chris Irwin Davis Email: [email protected] Phone: (972) 883-3574 Office: ECSS 4.705. CS-4337 Organization of Programming Languages
Chapter 1 CS-4337 Organization of Programming Languages Dr. Chris Irwin Davis Email: [email protected] Phone: (972) 883-3574 Office: ECSS 4.705 Chapter 1 Topics Reasons for Studying Concepts of Programming
Lecture 1: Introduction
Programming Languages Lecture 1: Introduction Benjamin J. Keller Department of Computer Science, Virginia Tech Programming Languages Lecture 1 Introduction 2 Lecture Outline Preview History of Programming
Instruction Set Architecture (ISA) Design. Classification Categories
Instruction Set Architecture (ISA) Design Overview» Classify Instruction set architectures» Look at how applications use ISAs» Examine a modern RISC ISA (DLX)» Measurement of ISA usage in real computers
An Incomplete C++ Primer. University of Wyoming MA 5310
An Incomplete C++ Primer University of Wyoming MA 5310 Professor Craig C. Douglas http://www.mgnet.org/~douglas/classes/na-sc/notes/c++primer.pdf C++ is a legacy programming language, as is other languages
Implementation Aspects of OO-Languages
1 Implementation Aspects of OO-Languages Allocation of space for data members: The space for data members is laid out the same way it is done for structures in C or other languages. Specifically: The data
Chapter 5 Names, Bindings, Type Checking, and Scopes
Chapter 5 Names, Bindings, Type Checking, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Type Checking Strong Typing Scope Scope and Lifetime Referencing Environments Named
Integrating R with the Go programming language using interprocess communication
Integrating R with the Go programming language using interprocess communication Christoph Best, Karl Millar, Google Inc. [email protected] Statistical software in practice & production Production environments!!!=
Objectif. Participant. Prérequis. Remarque. Programme. C# 3.0 Programming in the.net Framework. 1. Introduction to the.
Objectif This six-day instructor-led course provides students with the knowledge and skills to develop applications in the.net 3.5 using the C# 3.0 programming language. C# is one of the most popular programming
02 B The Java Virtual Machine
02 B The Java Virtual Machine CS1102S: Data Structures and Algorithms Martin Henz January 22, 2010 Generated on Friday 22 nd January, 2010, 09:46 CS1102S: Data Structures and Algorithms 02 B The Java Virtual
Programming Languages
Programming Languages Qing Yi Course web site: www.cs.utsa.edu/~qingyi/cs3723 cs3723 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer Science Office:
