Fast JavaScript in V8. The V8 JavaScript Engine. ...well almost all boats. Never use with. Never use with part 2.
|
|
|
- Alexis Elliott
- 9 years ago
- Views:
Transcription
1 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 JavaScript VM with a JIT compiler, accurate garbage collection etc. Embedded in Google Chrome, Android 2.2, node.js, HP WebOS See more at Kickstarted the JavaScript performance wars, resulting in better JS performance on all browsers My passion: A rising tide lifts all boats Handout note: If you found the Rx, Erjang or akka talks interesting then check out node.js....well almost all boats. Image credit: Jim Champion Attribution-ShareAlike 2.0 Generic Never use with function with_with() { with(math) { var sum = 0; for (var i = 0; i < 10000; i++) { sum += i; return floor(sum); // Note this is outside the loop! with_with(); Never use with part 2
2 With Ruins Everything Revision 2 of this test case created by Erik Corry on 24th August 2010 Info Shows how using with destroys performance of apparently unrelated variables. Ready to run tests Testing in Chrome on Intel Mac OS X Test No with function no_with() { var sum = 0; for (var i = 0; i < 10000; i++) { sum += i; return Math.floor(sum); no_with(); eval can be like with (function() { var sum; function bench() { sum = 0; for (var i = -1000; i < 1000; i++) { sum += i; sum += eval("42"); return sum; bench(); )(); eval can be like with part 2 (function() { var sum; function bench() { sum = 0; for (var i = -1000; i < 1000; i++) { sum += i; // which sum? sum += eval("var sum;"); return sum; bench(); )(); eval can be like with part 3 Solution: use eval.call instead. eval.call(null, "42"); See
3 Eval done right Test case created by Erik Corry 1 week ago Info If you have to use eval (and JSON.parse isn't good enough) then there's a right and a wrong way to do it. Ready to run tests Testing in Chrome on Intel Mac OS X Test (function() { var sum; function bench() { sum = 0; It should be slow to use parseint Instead of Math.floor people use parseint This converts your number to a string Then it parses it as an integer When it gets to a decimal point it stops parsing That's slow, but... But parseint has friends... it's fast. Dean Edwards' JavaScript packer uses parseint SunSpider uses packer So everyone is fast at parseint on floating point numbers We are not SunSpider fans... but we are fast at it. I actually do love jsnes What parseint used to look like // ECMA function GlobalParseInt(string, radix) { if (IS_UNDEFINED(radix)) { radix = 0; else { radix = TO_INT32(radix);
4 if (!(radix == 0 (2 <= radix && radix <= 36))) return $NaN; string = TO_STRING(string); return %StringParseInt(string, radix); What parseint looks like now // ECMA function GlobalParseInt(string, radix) { if (IS_UNDEFINED(radix)) { if (%_IsSmi(string)) return string; if (IS_NUMBER(string) && ((0.01 < string && string < 1e9) (-1e9 < string && string < -0.01))) { // Truncate number. return string 0; radix = 0; else { radix = TO_INT32(radix); if (!(radix == 0 (2 <= radix && radix <= 36))) return $NaN; string = TO_STRING_INLINE(string); if (%_HasCachedArrayIndex(string) && (radix == 0 radix == 10)) { return %_GetCachedArrayIndex(string); return %StringParseInt(string, radix); Keeping method calls fast Calling methods is a fundamental operation in object-oriented programs In JavaScript, methods are usually properties on the prototype of an object It's not a huge effect, but V8 and Safari like for the number of arguments to match up at the call site and the function definition. There are a lot of method calls in the V8 benchmark suite Goldilocks method calls
5 Arguments Adaptor Test case created by Erik Corry 5 days ago and last updated 4 days ago Info What are the performance implications of calling a function with the wrong number of arguments? inlining since that is not what we want to measure here. Ready to run tests Testing in Chrome on Intel Mac OS X Test function FibberTooMany() { Too many arguments FibberTooMany.prototype.fib = function(x) { if (x < 3) return 1; return this.fib(x - 2, 0) + this.fib(x - 1 Keeping property accesses fast Accessing member variables on objects is another fundamental operation in object-oriented programs This applies to member variables on this too In JavaScript member variables are properties on an object Objects are rather like string-keyed hash maps So how does V8 represent these objects? Maps in V8 Each object in V8 has a map that describes its layout Many objects share a map function Point(x, y) { this.x = x; this.y = y; var point = new Point(42, 3.14);
6 Map Transitions in V8 If you add a property to an object it transitions to a new map point.color = "red"; Out-of-object properties point.z = 2.71;
7 Load of an in-object property return this.x; 17 8b4508 mov eax,[ebp+0x8] ;load this from stack 20 a801 test al,0x1 ;is this an object 22 0f841b jz 55 (0xf54905f7) ff21a049f5 cmp [eax+0xff],0xf549a021 ;check map 35 0f850e jnz 55 (0xf54905f7) 41 8b98feffff7f mov ebx,[eax+0x7ffffffe] ;load in-object 47 89d8 mov eax,ebx ;return in eax 49 8be5 mov esp,ebp ;js return 51 5d pop ebp 52 c20400 ret 0x4 ; out-of-line code 55 b97d514af5 mov ecx,0xf54a517d ;"x" 60 e89ff8feff call LoadIC_Initialize ;load 65 a9dbffffff test eax,0xffffffdb ;offset 70 89c3 mov ebx,eax ;restore regs 72 8b7df8 mov edi,[ebp+0xf8] 75 8b4508 mov eax,[ebp+0x8] 78 ebdf jmp 47 (0xf54905ef) ;to fast case Making properties slow: Out of object function OutOfObject() { this.initialize(); OutOfObject.prototype.initialize = function() { this.foo = null; this.bar = null; this.color = "transparent"; this.that = "bla"; this.the_other = "bla"; this.x = 0; this.y = 0; Making properties slow: delete function Deleted() { this.foo = null; this.bar = null;
8 this.color = "transparent"; this.that = "bla"; this.the_other = "bla"; this.x = 0; this.y = 0; delete this.foo; Making properties slow: ECMAScript 5 This can probably be improved But right now using these ECMAScript 5 functions will slow down property access: Object.freeze(); Object.seal(); Object.preventExtensions() Compare ways to slow down JS Making property access slow Test case created by Erik Corry 1 week ago Info Investigates some ways to accidentally slow down property access. Preparation code <script> function InObject() { this.foo = null; this.bar = null; this.color = "transparent"; this.that = "bla"; this.the_other = "bla"; this.x = 0; this.y = 0; function OutOfObject() { The silly one: indexof Some like to use indexof to test whether a string starts with something. if (haystack.indexof("fish") == 0) { You can use lastindexof similarly Also applies to arrays What if the string you are looking at is big? For indexof use /^fish/ For lastindexof I'd like to suggest /fish$/ Unfortunately that's not optimized... Instead of lastindexof String.prototype.EndsWith = function(needle) { var len = needle.length; if (len > this.length) return false; var offset = this.length - len; for (var i = 0; i < len; i++) { if (needle.charcodeat(i)!== this.charcodeat(offset + i)) return false; return true;
9 How to iterate over an array The best way is for (var i = 0; i < data.length; i++) { You can cache the length in a variable, but even on the empty loop it's only worth <20% This is 20 times slower: for (var i in data) { It also breaks down if someone adds an enumerable property to Array.prototype If you have a sparse array then you have to use for in. Perhaps one day foreach will optimize for this Even with the function call overhead array.foreach() is still 4 times faster than for in The Dreaded Miscellaneous DOM operations are slow. Cache the results. Local variables in functions are faster and cleaner than variables on the window/global object Regular expressions can do catastrophic backtracking Premature optimization is the root of all evil. There's a profiler built into Google Chrome. Summary O(n)! O(1) Avoid using indexof to test what a string starts with Factor 200 Avoid with Factor 20 Use for loop instead of for in on arrays. Factor 6 Use eval.call(null, arg) Factor 3 Use x.foo = void 0 instead of delete Factor 3 (right now) Avoid Object.freeze etc. Factor 2 Keep properties in-object 20% Call functions with the right number of arguments 20% Cache array.length in an empty loop
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
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
Web Programming Step by Step
Web Programming Step by Step Lecture 13 Introduction to JavaScript Reading: 7.1-7.4 Except where otherwise noted, the contents of this presentation are Copyright 2009 Marty Stepp and Jessica Miller. Client-side
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
JavaScript. JavaScript: fundamentals, concepts, object model. Document Object Model. The Web Page. The window object (1/2) The document object
JavaScript: fundamentals, concepts, object model Prof. Ing. Andrea Omicini II Facoltà di Ingegneria, Cesena Alma Mater Studiorum, Università di Bologna [email protected] JavaScript A scripting language:
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
Tachyon: a Meta-circular Optimizing JavaScript Virtual Machine
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
TypeScript for C# developers. Making JavaScript manageable
TypeScript for C# developers Making JavaScript manageable Agenda What is TypeScript OO in TypeScript Closure Generics Iterators Asynchronous programming Modularisation Debugging TypeScript 2 What is TypeScript
Finding XSS in Real World
Finding XSS in Real World by Alexander Korznikov [email protected] 1 April 2015 Hi there, in this tutorial, I will try to explain how to find XSS in real world, using some interesting techniques. All
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
Lab 5 Introduction to Java Scripts
King Abdul-Aziz University Faculty of Computing and Information Technology Department of Information Technology Internet Applications CPIT405 Lab Instructor: Akbar Badhusha MOHIDEEN Lab 5 Introduction
Abysssec Research. 1) Advisory information. 2) Vulnerable version
Abysssec Research 1) Advisory information Title Version Discovery Vendor Impact Contact Twitter CVE : Apple QuickTime FlashPix NumberOfTiles Remote Code Execution Vulnerability : QuickTime player 7.6.5
Performance Testing. Based on slides created by Marty Stepp http://www.cs.washington.edu/403/
Performance Testing Based on slides created by Marty Stepp http://www.cs.washington.edu/403/ Acceptance, performance acceptance testing: System is shown to the user / client / customer to make sure that
JavaScript: Control Statements I
1 7 JavaScript: Control Statements I 7.1 Introduction 2 The techniques you will learn here are applicable to most high-level languages, including JavaScript 1 7.2 Algorithms 3 Any computable problem can
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.
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
Browser Performance Tests We put the latest web browsers head-to-head to try to find out which one is best!
Browser Performance Tests We put the latest web browsers head-to-head to try to find out which one is best! Browsers Tested Google Chrome 31 Mozilla Firefox 25 Internet Explorer 11 Opera 17 Apple Safari
Compiler Construction
Compiler Construction Lecture 1 - An Overview 2003 Robert M. Siegfried All rights reserved A few basic definitions Translate - v, a.to turn into one s own language or another. b. to transform or turn from
ELEC 377. Operating Systems. Week 1 Class 3
Operating Systems Week 1 Class 3 Last Class! Computer System Structure, Controllers! Interrupts & Traps! I/O structure and device queues.! Storage Structure & Caching! Hardware Protection! Dual Mode Operation
Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program
Free Java textbook available online "Thinking in Java" by Bruce Eckel, 4th edition, 2006, ISBN 0131872486, Pearson Education Introduction to the Java programming language CS 4354 Summer II 2015 The third
CS412/CS413. Introduction to Compilers Tim Teitelbaum. Lecture 20: Stack Frames 7 March 08
CS412/CS413 Introduction to Compilers Tim Teitelbaum Lecture 20: Stack Frames 7 March 08 CS 412/413 Spring 2008 Introduction to Compilers 1 Where We Are Source code if (b == 0) a = b; Low-level IR code
Level 7. ECMAScript 5: The New Parts
Level 7 ECMAScript 5: The New Parts Any change to a standard is an act of violence. Complete implementations of ECMAScript, Fifth Edition, are now beginning to appear in the best web browsers. ECMAScript
Free Java textbook available online. Introduction to the Java programming language. Compilation. A simple java program
Free Java textbook available online "Thinking in Java" by Bruce Eckel, 4th edition, 2006, ISBN 0131872486, Pearson Education Introduction to the Java programming language CS 4354 Summer II 2014 Jill Seaman
AP Computer Science Java Subset
APPENDIX A AP Computer Science Java Subset The AP Java subset is intended to outline the features of Java that may appear on the AP Computer Science A Exam. The AP Java subset is NOT intended as an overall
J a v a Quiz (Unit 3, Test 0 Practice)
Computer Science S-111a: Intensive Introduction to Computer Science Using Java Handout #11 Your Name Teaching Fellow J a v a Quiz (Unit 3, Test 0 Practice) Multiple-choice questions are worth 2 points
Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007
Object-Oriented Design Lecture 4 CSU 370 Fall 2007 (Pucella) Tuesday, Sep 18, 2007 The Java Type System By now, you have seen a fair amount of Java. Time to study in more depth the foundations of the language,
UIL Computer Science for Dummies by Jake Warren and works from Mr. Fleming
UIL Computer Science for Dummies by Jake Warren and works from Mr. Fleming 1 2 Foreword First of all, this book isn t really for dummies. I wrote it for myself and other kids who are on the team. Everything
JavaScript: Arrays. 2008 Pearson Education, Inc. All rights reserved.
1 10 JavaScript: Arrays 2 With sobs and tears he sorted out Those of the largest size... Lewis Carroll Attempt the end, and never stand to doubt; Nothing s so hard, but search will find it out. Robert
MULTIPLE CHOICE. Choose the one alternative that best completes the statement or answers the question.
Exam Name MULTIPLE CHOICE. Choose the one alternative that best completes the statement or answers the question. 1) The JDK command to compile a class in the file Test.java is A) java Test.java B) java
NoSQL web apps. w/ MongoDB, Node.js, AngularJS. Dr. Gerd Jungbluth, NoSQL UG Cologne, 4.9.2013
NoSQL web apps w/ MongoDB, Node.js, AngularJS Dr. Gerd Jungbluth, NoSQL UG Cologne, 4.9.2013 About us Passionate (web) dev. since fallen in love with Sinclair ZX Spectrum Academic background in natural
Computer Organization and Architecture
Computer Organization and Architecture Chapter 11 Instruction Sets: Addressing Modes and Formats Instruction Set Design One goal of instruction set design is to minimize instruction length Another goal
Javascript in Ten Minutes
Javascript in Ten Minutes Spencer Tipping March 20, 2013 Contents 1 Introduction 3 2 Types 3 3 Functions 4 3.1 Variadic behavior (a cool thing)................... 4 3.2 Lazy scoping (a cool thing)......................
The Commerce Trust Company
The Commerce Trust Company WEALTH MANAGER Overview Guide New Page Layout The pages within Wealth Manager have been designed to provide a consistent experience throughout a vast array of features. Each
CS106A, Stanford Handout #38. Strings and Chars
CS106A, Stanford Handout #38 Fall, 2004-05 Nick Parlante Strings and Chars The char type (pronounced "car") represents a single character. A char literal value can be written in the code using single quotes
PHP Tutorial From beginner to master
PHP Tutorial From beginner to master PHP is a powerful tool for making dynamic and interactive Web pages. PHP is the widely-used, free, and efficient alternative to competitors such as Microsoft's ASP.
64-Bit NASM Notes. Invoking 64-Bit NASM
64-Bit NASM Notes The transition from 32- to 64-bit architectures is no joke, as anyone who has wrestled with 32/64 bit incompatibilities will attest We note here some key differences between 32- and 64-bit
Boolean Expressions, Conditions, Loops, and Enumerations. Precedence Rules (from highest to lowest priority)
Boolean Expressions, Conditions, Loops, and Enumerations Relational Operators == // true if two values are equivalent!= // true if two values are not equivalent < // true if left value is less than the
QML and JavaScript for Native App Development
Esri Developer Summit March 8 11, 2016 Palm Springs, CA QML and JavaScript for Native App Development Michael Tims Lucas Danzinger Agenda Native apps. Why? Overview of Qt and QML How to use JavaScript
Performance Issues and Optimizations in JavaScript: An Empirical Study
Performance Issues and Optimizations in JavaScript: An Empirical Study Marija Selakovic and Michael Pradel Technical Report TUD-CS-15-1249 TU Darmstadt, Department of Computer Science October, 15 Performance
Introduction. Application Security. Reasons For Reverse Engineering. This lecture. Java Byte Code
Introduction Application Security Tom Chothia Computer Security, Lecture 16 Compiled code is really just data which can be edit and inspected. By examining low level code protections can be removed and
Example of a Java program
Example of a Java program class SomeNumbers static int square (int x) return x*x; public static void main (String[] args) int n=20; if (args.length > 0) // change default n = Integer.parseInt(args[0]);
Top Ten Qlik Performance Tips
Top Ten Qlik Performance Tips Rob Wunderlich Panalytics, Inc 1 About Me Rob Wunderlich Qlikview Consultant and Trainer Using Qlikview since 2006 Author of Document Analyzer and other tools Founder of QlikView
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
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)
Chapter 7D The Java Virtual Machine
This sub chapter discusses another architecture, that of the JVM (Java Virtual Machine). In general, a VM (Virtual Machine) is a hypothetical machine (implemented in either hardware or software) that directly
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
Technical University of Sofia Faculty of Computer Systems and Control. Web Programming. Lecture 4 JavaScript
Technical University of Sofia Faculty of Computer Systems and Control Web Programming Lecture 4 JavaScript JavaScript basics JavaScript is scripting language for Web. JavaScript is used in billions of
THE BUSINESS CASE FOR HYBRID HTML5 MOBILE APPS
Exploring the business case for building hybrid HTML5 mobile applications for enterprise mobility projects compared to implementing with a purely native development approach. THE BUSINESS CASE FOR HYBRID
How To Login To Webex Online
Getting Prepared for Your Online Course! This document will let you know what to expect and walk you through a Test Login One of our top priorities is to meet your demand for high quality, easy to use,
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
TitanMist: Your First Step to Reversing Nirvana TitanMist. mist.reversinglabs.com
TitanMist: Your First Step to Reversing Nirvana TitanMist mist.reversinglabs.com Contents Introduction to TitanEngine.. 3 Introduction to TitanMist 4 Creating an unpacker for TitanMist.. 5 References and
Software Fingerprinting for Automated Malicious Code Analysis
Software Fingerprinting for Automated Malicious Code Analysis Philippe Charland Mission Critical Cyber Security Section October 25, 2012 Terms of Release: This document is approved for release to Defence
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
2014 HSC Software Design and Development Marking Guidelines
014 HSC Software Design and Development Marking Guidelines Section I Multiple-choice Answer Key Question Answer 1 B A A 4 D 5 A 6 D 7 A 8 B 9 C 10 D 11 B 1 B 1 A 14 A 15 B 16 D 17 C 18 C 19 D 0 D 1 Section
CS61: Systems Programing and Machine Organization
CS61: Systems Programing and Machine Organization Fall 2009 Section Notes for Week 2 (September 14 th - 18 th ) Topics to be covered: I. Binary Basics II. Signed Numbers III. Architecture Overview IV.
Performance Testing for Ajax Applications
Radview Software How to Performance Testing for Ajax Applications Rich internet applications are growing rapidly and AJAX technologies serve as the building blocks for such applications. These new technologies
Appium mobile test automation
Appium mobile test automation for Google Android and Apple ios Last updated: 4 January 2016 Pepgo Limited, 71-75 Shelton Street, Covent Garden, London, WC2H 9JQ, United Kingdom Contents About this document...
Visual Basic Programming. An Introduction
Visual Basic Programming An Introduction Why Visual Basic? Programming for the Windows User Interface is extremely complicated. Other Graphical User Interfaces (GUI) are no better. Visual Basic provides
DESIGNING HTML HELPERS TO OPTIMIZE WEB APPLICATION DEVELOPMENT
Abstract DESIGNING HTML HELPERS TO OPTIMIZE WEB APPLICATION DEVELOPMENT Dragos-Paul Pop 1 Building a web application or a website can become difficult, just because so many technologies are involved. Generally
PLAYER DEVELOPER GUIDE
PLAYER DEVELOPER GUIDE CONTENTS CREATING AND BRANDING A PLAYER IN BACKLOT 5 Player Platform and Browser Support 5 How Player Works 6 Setting up Players Using the Backlot API 6 Creating a Player Using the
PERFORMANCE ENHANCEMENTS IN TreeAge Pro 2014 R1.0
PERFORMANCE ENHANCEMENTS IN TreeAge Pro 2014 R1.0 15 th January 2014 Al Chrosny Director, Software Engineering TreeAge Software, Inc. [email protected] Andrew Munzer Director, Training and Customer
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]
風 水. Heap Feng Shui in JavaScript. Alexander Sotirov. [email protected]
風 水 Heap Feng Shui in JavaScript Alexander Sotirov [email protected] Black Hat Europe 2007 Introduction What is Heap Feng Shui? the ancient art of arranging heap blocks in order to redirect the program
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
Abusing HTML5. DEF CON 19 Ming Chow Lecturer, Department of Computer Science TuCs University Medford, MA 02155 [email protected]
Abusing HTML5 DEF CON 19 Ming Chow Lecturer, Department of Computer Science TuCs University Medford, MA 02155 [email protected] What is HTML5? The next major revision of HTML. To replace XHTML? Yes Close
CS170 Lab 11 Abstract Data Types & Objects
CS170 Lab 11 Abstract Data Types & Objects Introduction: Abstract Data Type (ADT) An abstract data type is commonly known as a class of objects An abstract data type in a program is used to represent (the
Administration. Instruction scheduling. Modern processors. Examples. Simplified architecture model. CS 412 Introduction to Compilers
CS 4 Introduction to Compilers ndrew Myers Cornell University dministration Prelim tomorrow evening No class Wednesday P due in days Optional reading: Muchnick 7 Lecture : Instruction scheduling pr 0 Modern
Browser Performance Tests We put the latest web browsers head-to-head to try to find out which one is best!
Browser Performance Tests We put the latest web browsers head-to-head to try to find out which one is best! Browsers Tested Google Chrome 23 Mozilla Firefox 16 Internet Explorer 10 Internet Explorer 9
The Java Virtual Machine and Mobile Devices. John Buford, Ph.D. [email protected] Oct 2003 Presented to Gordon College CS 311
The Java Virtual Machine and Mobile Devices John Buford, Ph.D. [email protected] Oct 2003 Presented to Gordon College CS 311 Objectives Review virtual machine concept Introduce stack machine architecture
GTask Developing asynchronous applications for multi-core efficiency
GTask Developing asynchronous applications for multi-core efficiency February 2009 SCALE 7x Los Angeles Christian Hergert What Is It? GTask is a mini framework to help you write asynchronous code. Dependencies
X86-64 Architecture Guide
X86-64 Architecture Guide For the code-generation project, we shall expose you to a simplified version of the x86-64 platform. Example Consider the following Decaf program: class Program { int foo(int
Title: Appium Automation for Mac OS X. Created By: Prithivirajan M. Abstract. Introduction
Title: Appium Automation for Mac OS X Created By: Prithivirajan M Abstract This document aims at providing the necessary information required for setting up mobile testing environment in Mac OS X for testing
PC Requirements and Technical Help. Q1. How do I clear the browser s cache?
Q1. How do I clear the browser s cache? A1. Clear your browser's cache, and close all other applications that are running in your PC to free up memory space. For instructions on clearing cache (temporary
ELEG3924 Microprocessor Ch.7 Programming In C
Department of Electrical Engineering University of Arkansas ELEG3924 Microprocessor Ch.7 Programming In C Dr. Jingxian Wu [email protected] OUTLINE 2 Data types and time delay I/O programming and Logic operations
CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013
Oct 4, 2013, p 1 Name: CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013 1. (max 18) 4. (max 16) 2. (max 12) 5. (max 12) 3. (max 24) 6. (max 18) Total: (max 100)
MASTERTAG DEVELOPER GUIDE
MASTERTAG DEVELOPER GUIDE TABLE OF CONTENTS 1 Introduction... 4 1.1 What is the zanox MasterTag?... 4 1.2 What is the zanox page type?... 4 2 Create a MasterTag application in the zanox Application Store...
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
Learn Neos. TypoScript 2. Pocket Reference. for TYPO3 Neos 1.1
Learn Neos TypoScript 2 Pocket Reference for TYPO3 Neos 1.1 Download digital version, give feedback, report errors http://bit.ly/ts2-pocket Table of Contents TypoScript 2 Syntax.........................................
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
http://www.nologin.org Bypassing Windows Hardware-enforced Data Execution Prevention
http://www.nologin.org Bypassing Windows Hardware-enforced Data Execution Prevention Oct 2, 2005 skape [email protected] Skywing [email protected] One of the big changes that Microsoft introduced
HTML5. Eoin Keary CTO BCC Risk Advisory. www.bccriskadvisory.com www.edgescan.com
HTML5 Eoin Keary CTO BCC Risk Advisory www.bccriskadvisory.com www.edgescan.com Where are we going? WebSockets HTML5 AngularJS HTML5 Sinks WebSockets: Full duplex communications between client or server
Using Safari to Deliver and Debug a Responsive Web Design
Media #WWDC15 Using Safari to Deliver and Debug a Responsive Web Design Session 505 Jono Wells Safari and WebKit Engineer 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted
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
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
Applying Clang Static Analyzer to Linux Kernel
Applying Clang Static Analyzer to Linux Kernel 2012/6/7 FUJITSU COMPUTER TECHNOLOGIES LIMITED Hiroo MATSUMOTO 管 理 番 号 1154ka1 Copyright 2012 FUJITSU COMPUTER TECHNOLOGIES LIMITED Abstract Now there are
Bazaarvoice for Magento
Bazaarvoice Bazaarvoice for Magento Extension Implementation Guide v6.1.2.3 Version 6.1.2.3 Bazaarvoice Inc. 8/5/2015 Introduction Bazaarvoice maintains a pre-built integration into the Magento platform.
Object Oriented Software Design
Object Oriented Software Design Introduction to Java - II Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa September 14, 2011 G. Lipari (Scuola Superiore Sant Anna) Introduction
Progressive Enhancement With GQuery and GWT. Ray Cromwell [email protected]
Progressive Enhancement With GQuery and GWT Ray Cromwell [email protected] Web Application Models Web 1.0, 1 Interaction = 1 Page Refresh Pure JS, No Navigation Away from Page Mixed Model, Page Reloads
Certified PHP/MySQL Web Developer Course
Course Duration : 3 Months (120 Hours) Day 1 Introduction to PHP 1.PHP web architecture 2.PHP wamp server installation 3.First PHP program 4.HTML with php 5.Comments and PHP manual usage Day 2 Variables,
Virtuozzo Virtualization SDK
Virtuozzo Virtualization SDK Programmer's Guide February 18, 2016 Copyright 1999-2016 Parallels IP Holdings GmbH and its affiliates. All rights reserved. Parallels IP Holdings GmbH Vordergasse 59 8200
