1 3 1.1............................ 3 1.2.......................... 3 2 5 2.1.............................. 5 2.1.1............................... 5 2



Similar documents
Microsoft PowerPoint ppt

Agenda Intro & history LLVM overview Demo Pros & Cons LLVM Intermediate Language LLVM tools

fmaster.dvi


spa99.dvi

maegaki_4_suzuki_yuusuke.pdf

28 Docker Design and Implementation of Program Evaluation System Using Docker Virtualized Environment

スライド 1

r1.dvi

PowerPoint プレゼンテーション

Java

第5回お試しアカウント付き並列プログラミング講習会

1 Code Generation Part I Chapter 8 (1 st ed. Ch.9) COP5621 Compiler Construction Copyright Robert van Engelen, Florida State University,

Introduction Purpose This training course demonstrates the use of the High-performance Embedded Workshop (HEW), a key tool for developing software for

JavaScript Web Web Web Web Web JavaScript Web Web JavaScript JavaScript JavaScript GC GC GC GC JavaScript SSJSVM GC SSJSVM GC GC GC SSJSVM GC GC SSJSV

mnal_HDR4ex_5ex.pdf

main.dvi

I117 II I117 PROGRAMMING PRACTICE II DEBUG Research Center for Advanced Computing Infrastructure (RCACI) / Yasuhiro Ohara

untitled

Condition DAQ condition condition 2 3 XML key value

untitled

. 61 5,000 5, ,

01.ai

組込みシステムシンポジウム2011 Embedded Systems Symposium 2011 ESS /10/20 FPGA Android Android Java FPGA Java FPGA Dalvik VM Intel Atom FPGA PCI Express DM


FAX-760CLT

Web Web Web Web i

Microsoft PowerPoint - NxLecture ppt [互換モード]

Microsoft PowerPoint ppt

compiler-text.dvi


サービス付き高齢者向け住宅賠償責任保険.indd

2

4名連記 P1-21

1.中山&内田 P1-9


untitled

COINS..

PC Windows 95, Windows 98, Windows NT, Windows 2000, MS-DOS, UNIX CPU

32

新・明解C言語 実践編

Fig. 3 3 Types considered when detecting pattern violations 9)12) 8)9) 2 5 methodx close C Java C Java 3 Java 1 JDT Core 7) ) S P S

WebGL *1 DOM API *1 X LR301 Kageyama (Kobe Univ.) Visualization / 37

,4) 1 P% P%P=2.5 5%!%! (1) = (2) l l Figure 1 A compilation flow of the proposing sampling based architecture simulation

r07.dvi

インターネットサービス_vol5

cpp1.dvi

@ LL Future 2008/08/30 MORITA Hajime

ohp07.dvi

B

IPSJ SIG Technical Report Vol.2015-ARC-215 No.7 Vol.2015-OS-133 No /5/26 Just-In-Time PG 1,a) 1, Just-In-Time VM Geyser Dalvik VM Caffei

10/ / /30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20 6. http, CGI Perl 11/27 7. ( ) Perl 12/ 4 8. Windows Winsock 12/11 9. JAV

STARTプログラム.indd

jssst07.dvi


key

5-1_a-kanaoka_JPNICSecSemi_Phish_Tech_ _3.PDF


「東京こどもネット・ケータイヘルプデスク(こたエール)」平成22年度相談実績の概要

02

I117 II I117 PROGRAMMING PRACTICE II SOFTWARE DEVELOPMENT ENV. 1 Research Center for Advanced Computing Infrastructure (RCACI) / Yasuhiro Ohara

3 3.1 algebraic datatype data k = 1 1,1... 1,n1 2 2,1... 2,n2... m m,1... m,nm 1 m m m,1,..., m,nm m 1, 2,..., k 1 data Foo x y = Alice x [y] B

workshop Eclipse TAU AICS.key

IPSJ SIG Technical Report Vol.2013-CE-119 No /3/15 enpoly enpoly enpoly 1) 2) 2 C Java Bertrand Meyer [1] 1 1 if person greeting()

¥Ñ¥Ã¥±¡¼¥¸ Rhpc ¤Î¾õ¶·

1.4操作マニュアル+ユニット解説

0.3% 10% 4% 0.8% 5% 5% 23% 53%


1

cpp4.dvi

インテル® VTune™ パフォーマンス・アナライザー 9.1 Windows* 版

背景

2017_Eishin_Style_H01

81

Visual Studio ( )

,,,,., C Java,,.,,.,., ,,.,, i

ORCA (Online Research Control system Architecture)

2006 [3] Scratch Squeak PEN [4] PenFlowchart 2 3 PenFlowchart 4 PenFlowchart PEN xdncl PEN [5] PEN xdncl DNCL 1 1 [6] 1 PEN Fig. 1 The PEN

untitled

Q 23 A Q Q15 76 Q23 77

DE-6001 取扱説明書



受動的攻撃について

ジェネリック医薬品販売会社(田辺製薬販売株式会社)の設立に伴う包装変更のご案内


06地図目録.pwd

橡82-93協力員原稿>授業

17. (1) 18. (1) 19. (1) 20. (1) 21. (1) (3) 22. (1) (3) 23. (1) (3) (1) (3) 25. (1) (3) 26. (1) 27. (1) (3) 28. (1) 29. (1) 2

RubyKaigi2009 COBOL

ex01.dvi

Introduction Purpose This course explains how to use Mapview, a utility program for the Highperformance Embedded Workshop (HEW) development environmen

Java Platform Debugger Architecture Apache JServ Oracle JVM JPDA JVM Tomcat Oracle JVM... 7

IPSJ SIG Technical Report Vol.2014-EIP-63 No /2/21 1,a) Wi-Fi Probe Request MAC MAC Probe Request MAC A dynamic ads control based on tra

ex01.dvi

(a) (b) 1 JavaScript Web Web Web CGI Web Web JavaScript Web mixi facebook SNS Web URL ID Web 1 JavaScript Web 1(a) 1(b) JavaScript & Web Web Web Webji

PowerPoint プレゼンテーション



gc.dvi

Transcription:

JIT 23 2 2

1 3 1.1............................ 3 1.2.......................... 3 2 5 2.1.............................. 5 2.1.1............................... 5 2.1.2.................... 5 2.1.3................... 7 2.1.4.......................... 9 2.1.5............................. 12 2.2 JIT.............................. 13 2.2.1.......................... 13 2.2.2......................... 14 2.3 Java............................. 17 2.3.1............................. 17 2.3.2.............. 18 2.3.3...................... 20 3 22 3.1.............................. 22 3.2............................... 22 4 24 4.1.............................. 24 4.2......................... 26 4.3............................... 26 4.4......................... 30 5 32 5.1.............................. 32 5.2................................. 32 1

6 37 7 40 8 42 9 44 10 46 2

1 1.1 Java JIT SableVM Java JIT JavaScript ( ) TraceMonkey FireFox 1.2 Java JIT Java 3

Java Java Java 4

2 2.1 2.1.1 2.1.2 VM 5

Java 2.1: 6

2.1.3 goto 2.2: 7

GCC GCC 2.2 8

2.1.4 2.3: 9

2.4: 1 ( ) jump call 10

PC C C ( gcc x86 ) C START END C 11

2.1.5 2.5: 12

2.2 JIT 2.2.1 JIT JIT ( ) VM JIT VM 13

2.6: 2.2.2 VM 14

2.7: 15

2.8: JavaScript TraceMonkey JIT Java 16

2.3 Java 2.3.1 Java Java JavaVM Java Java Java Java class ( ) class Java Java class Java Java OS 17

C Java 2.3.2 JavaVM Java Java Java Java JavaVM JavaVM Java Java JavaVM Java JavaVM Java JavaVM 0 18

2.9: Java 19

2.3.3 Java C++ iload 1 ; // iload 2 ; // iadd ; 20

2.10: 21

3 Java JavaScript JIT Java Java 3.1 Java Java SableVM SableVM SableVM 3.2 istore iload 22

23

4 4.1 24

25

4.2 TraceMonkey JIT 4.3 istore iload istore iload (iload INLINED_START_ILOAD ) INLINED_START_ 26

/* ----------------------------------------------- ISTORE ----------------------------------------------- */ case SVM_INSTRUCTION_ISTORE: { env->vm->instructions[instr].param_count = 1; /* implementation address */ env->vm->instructions[instr].code.implementation = &&START_ISTORE; env->vm->instructions[instr].inlined_code.implementation = &&INLINED_START_ISTORE; /* code size */ env->vm->instructions[instr].inlined_size = ((char *) &&END_ISTORE) - ((char *) &&INLINED_START_ISTORE); /* can the implementation be relocated? */ env->vm->instructions[instr].flag = SVM_INLINEABLE_ISTORE; #if!defined(ndebug) defined(_sablevm_inlinability_testing) strcpy (env->vm->instructions[instr].name, "ISTORE"); #endif break; START_ISTORE: { #ifndef NDEBUG if (env->vm->verbose_instructions == JNI_TRUE) { _svmf_printf (env, stderr, "T%d: [verbose instructions: executing @%p ISTORE]\n", env->thread.id, (void *) (pc - 1)); 27

} #endif } INLINED_START_ISTORE: { _svmm_verbose_instructions_inlined (env, pc, "ISTORE"); /* instruction body */ { } jint indx = (pc++)->jint; locals[indx].jint = stack[--stack_size].jint; } { } END_ISTORE: /* dispatch */ goto *((pc++)->implementation); } 28

INLINED_START_ILOAD: { _svmm_verbose_instructions_inlined (env, pc, "ILOAD"); /* instruction body */ { } jint indx = (pc++)->jint; stack[stack_size++].jint = locals[indx].jint; } { } END_ILOAD: /* dispatch */ goto *((pc++)->implementation); } istore integer pop iload integer push istore iload integer pop push isl istore iload istore iload isl 29

4.1: istore,iadd 4.4 istore iload istore isl isl iload 30

isl iload iload 4.2: isl 31

5 5.1 goto goto JIT prepare_code.c 5.2 isl 32

/* --------------------------------------------------------- ISL --------------------------------------------------------- */ case SVM_INSTRUCTION_ISL: { env->vm->instructions[instr].param_count = 1; /* implementation address */ env->vm->instructions[instr].code.implementation = &&START_ISL; env->vm->instructions[instr].inlined_code. implementation = &&INLINED_START_ISL; /* code size */ env->vm->instructions[instr].inlined_size = ((char *) &&END_ISL) - ((char *) &&INLINED_START_ISL); /* can the implementation be relocated? */ env->vm->instructions[instr].flag = SVM_INLINEABLE_ISTORE; #if!defined(ndebug) defined(_sablevm_inlinability_testing) strcpy (env->vm->instructions[instr].name, "ISL"); #endif break; START_ISL: { #ifndef NDEBUG if (env->vm->verbose_instructions == JNI_TRUE) { _svmf_printf (env, stderr, "T%d: [verbose instructions: executing @%p ISL]\n", env->thread.id, (void *) (pc - 1)); 33

} #endif } INLINED_START_ISL: { _svmm_verbose_instructions_inlined (env, pc, "ISL"); /* instruction body */ { } } jint indx = (pc++)->jint; locals[indx].jint = stack[stack_size-1].jint; pc = pc + 2; { } END_ISL: /* dispatch */ goto *((pc++)->implementation); } integer pop push Java load 34

5.1: isl case SVM_INSTRUCTION_ISTORE: { instructions[instruction_index].data.arg.index = bytecode[pc+1]; jint test = bytecode[pc+1]; if(bytecode[pc+2]==svm_instruction_iload){ jint test2 = bytecode[pc+3]; if (test == test2){ method->data.code_attribute->code[pc] = SVM_INSTRUCTION_ISL; pc = pc+2; } } } break; istore iload istore isl 35

SVM_INSTRUCTION_ISL 36

6 SableVM SableVM 6.1 6.1 a SableVM b SableVM 6.1: 37

6.2: SableVM 3 SableVM 38

6.3: 39

7 SableVM SableVM SableVM SableVM 40

41

8 8.1 JavaVM SableVM JavaVM SableVM SableVM SableVM 8.2 42

43

9 Analyzing the Performance of Code-copying Virtual Machines :Gregory B. Prokopski, Clark Verbrugge Trace-based Just-in-Time Type Specialization for Dynamic Languages :Andreas Gal Effective Inline-Threaded Interpretation of Java Bytecode Using Preparation Sequences :Etienne Gagnon, Laurie Hendren Tracing for Web 3.0 :Mason Chang A Portable Research Framework For The Execution Of Java Bytecode :Etienne Gagnon SableVM: A Research Framework for the Efficient Execution of Java Bytecode :Etienne M. Gagnon, Laurie J. Hendren Optimizing Indirect Branch Prediction Accuracy in Virtual Machine Interpreters :Kevin Casey Optimizing code-copying JIT compilers for virtual stack machines :Devid Gregg, M. Anton Ertl Incremental Dynamic Code Generation with Trace Trees :Andreas Gal, Michael Franz TraceMonkey Technology Summary :Tomoya Asai http://mozilla.jp/blog/entry/3800/ Java Virtual Machine :Jon Meyer, Troy Downing Java :, Algebraic characterization of trace and decorated trace equivalences over tree-like structures :Xiao Jun Chen, Rocco de Nicola Speeding up the Synthesis of Programs from Traces :A. W. Biermann, R. I. Baum, F. E. Petry 44

Analyzing the performance of code-copying virtual machines :Gregory B. Prokopski, Clark Verbrugge 45

10 sablevm PDF CD 46