+ All Categories
Transcript
Page 1: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

!"#$%&'($)*+**

,$(&'($)*-#./+$(01*&23*4/#*!156#1#$4+%2$*2&**

72$.833#$.'*9:043+.%2$0*2$*-86%;<+$)8+)#*=-0*

>4#&+$*-+33?*@/#2*ABC2$"4*>2DE+3#*<+$)8+)#0*<+:*

@FF<>*G8325#?*HI4/*2&*-+'*JIKJ*

Page 2: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

9)#$"+*

•  9556(.+%2$0*($*4/#*186%.23#*+)#*

•  9*>83L#'M*E/+4*0/286"*E#*0855234N*

•  9*,$(&'($)*9:043+.%2$*

•  GL+68+%2$*

!"#"$#%&' &'

Page 3: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

7O,0*"2$B4*)#4*P+04#3*Q84*-86%56'*

!"#"$#%&' !'()*'+,-.')/*'011*'+,-.'

"2&'

%2$'

!23'!2!!'

I*

K*

J*

H*

R*

KSSI* KSST* JIII* JIIT* JIKI*

4'516,.'

UCV*

%'516,'

=-0*42"+'*

O#3&231+$.#* -#123'*-+$+)#1#$4*

7!"

-86%;<+$)8+)#*G.2*>'04#1* O6+W231*!$"#5#$"#$4*

Page 4: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

!"#"$#%&' 8'

9*,):';1*,:<'#L#$4;62250*23*+.4230*

C2E*42*(156#1#$4*+*-+(6*.6(#$4N*

,0#3*!$4#3&+.#*+0'$./32$280*#L#$4;"3(L#$*

Page 5: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

!"#"$#%&' $'

!"#$%&'&(")'$*+,-.*$/01,2340*56073809,,:;#$/0,40&-$53,1<=<=<>-.*$/0?,<-@A0B',,CD2EF2,FEG#2,'88&0--0-,HDIJ7K,$3/L,'88&0--L,@5BB03/MN,

,

CD2EF2,FEG#2,B0--'O0-,HDIJ7K,$3/L,B0--'O0P$8L,85@QB03/P$8L,$3P&06*(P/5L,&0B5/0P$8,$3/L,-0380&,$3/RMN,

C2E*42*(156#1#$4*+*-+(6*.6(#$4N*

A+4+*>423+)#* .2$0(04#$.'*3#X8(3#"*43+$0+.%2$+6*:+.Y#$"0*

9*,):';1*,:<'43+$0+.%2$+6*6+$)8+)#*12"#6*

Page 6: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

!"#"$#%&' 4'

C2E*42*(156#1#$4*+*-+(6*.6(#$4N*

A+4+*9$+6'0(0*+$"*O32.#00($)* 5#3&231+$.#*0#$0(%L#*

9*,):';1*,:<'"+4+;5+3+66#6*X8#3(#0?*1+5Z3#"8.#?*&23YZ[2($*

Page 7: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

72$.833#$.'*>855234*($*-86%;<+$)8+)#*=-0*@2"+'N*

!"#"$#%&' ='

ECMA-335 4th Edition / June 2006

Common Language Infrastructure (CLI)

Partitions I to VI

@/3#+"0* <2.Y0* >./#"86($)*

@/#*:+0(.0*2$6'M*C+3"*42*:8(6"*2$*425\*

Page 8: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

>?@ABC']/+4*"2*E#*$##"*&23*+*-86%;<+$)8+)#*=(348+6*-+./($#N*

!"#"$#%&' 3'

Page 9: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

!"#"$#%&' D'

Page 10: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

>83L#'*>8:[#.40M*@2*("#$%&'*72$.#540*

•  J*083L#'0M*Q3(24*#4*+6^_H`?*>Y(66(.23$*a*@+6(+*_HI`*•  <+$)8+)#0*b($"8043'*c*3#0#+3./d*•  O+5#30?*&23*2:L(280*)+50*

!"#"$#%&' %%'

9.%L#*F:[#.40*_Ke`* 7/+31cc** P2343#00*** F..+1;5(*** >(156#*f+L+***9"+* 7(6Y*** U2*** F5#$7<* >Y(66(.23$a@+6(+*_HI`*9("+*_JI`*** 762[83#*** !2*** F5#$-O*** >6'***96(.#*** 72Q2g#0*_Je`*** f7>O*** F36#+$0*_T`*** >43#+1!@***91:(#$4@+6Y*** 72$.833#$4*C+0Y#66*** f+L+*=(#E0*_e`*** FV*** >E($)***94#[(*Oh*** 72$.833#$4*-<*** f2($*f+L+*** O9-*_Ji`*** ,O7***9g81*** 72$.833#$4*F:[#.40* <($"+*_KK`*** j#+.%L#*F:[#.40*_JT`*hKI*Q3(24*#4*+6^*_H`*** 72$.833#$4*O+0.+6*** -O!*** >7FFO*_JR`* h7***7k*** G36+$)*** -+5j#"8.#*_JK`* >@-*_JS`* **7/+5#6*** P2343+$*JIIe*** -86%<(05*_KH`*** >(156#*7Z7cc*** **

Page 11: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

>83L#'*l8#0%2$0*

N9( *7+$*(4*:#*(156#1#$4#"*+0*+*6(:3+3'N*

>B; *A2#0*(4*3#X8(3#*38$%1#*0855234*42*)8+3+$4##*(40*0#1+$%.0N*

OB@7 *]286"*38$%1#*0855234*#$+:6#*0()$(m.+$4*5#3&231+$.#*(1532L#1#$40N*

OP *!0*(4*0855234#"*:'*021#*=-*+63#+"'N*

!"#"$#%&' %&'

Page 12: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

>83L#'*j#08640*

O6L16'P6H' OP' N9(' >B;' OB@7'PH1QL5'O6LQLRS,.' h* ;* ;* h*J1T61ER/,.' h* ;* ;* h*J1/*LR1/'A)6L)F:,.' h* h* ;* h*J6LR5):'>,5R1/.' h* h* ;* h*0:1F):'P**6,..'>I)5,.' h* h* ;* h*06,,/'UV6,)*.' h* ;* ;* ;*9QQEH)FL:LHW' h* ;* h* h*X1L/' h* ;* ;* ;*N15Y.' h* h* ;* h*;,Q16W';1*,:' h* ;* h* h*;,HV1*'9/S15)R1/' h* ;* ;* h*@)5,TP/*T@,I)L6' h* h* ;* ;*UV6,)*'O11:.' h* h* ;* ;*UV6,)*T:15):'A)6L)F:,.' h* h* ;* h*UV6,)*.' h* h* ;* ;*A1:)R:,.' h* ;* h* ;*Z6)II,6'[FG,5H.' h* h* ;* h*

!"#"$#%&' %!'

•  eJ*.2$.#540*("#$%m#"?*nI*.2$0("#3#"*"(0%$.4*NLF6)6W'>1:ER1/.' OP' N9(' >B;' OB@7'PK,/H.' ;* \' ;* ;*PO0P>' ;* \' ;* ;*PH1Q.' ;* \' ;* ;*J1/5E66,/H'[FG,5H.' ;* \' ;* ;*BS,/HTN11I' ;* \' ;* ;*BS,/H.' ;* \' ;* ;*7)6T@,],6,/5,.' ;* \' ;* ;*716Y#X1L/' ;* \' ;* ;*7EHE6,.' ;* \' ;* ;*0E)6*.' ;* \' ;* ;*;,..)K,'^E,E,' ;* \' ;* ;*[/,T.L*,*'J1QQE/L5)R1/' ;* \' ;* ;*

O)6)::,:'(E:Y'[I,6)R1/.' ;* \' ;* ;*

O0P>' ;* \' ;* ;*@,*E5,6.' ;* \' ;* ;*>L/K:,'(:15Y.' ;* \' ;* ;*>H)H,'@,51/5L:L)R1/' ;* \' ;* ;*

Page 13: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

>83L#'*j#08640*@,_EL6,'A;'>EII16H' OP' N9(' >B;' OB@7'

P5RS,'[FG,5H.' ;* h* h* ;*

P5H16.' ;* h* h* h*

P.W/5V61/1E.'9/S15)R1/' ;* h* h* h*

P`EQTa1Q)L/.' ;* h* h* ;*

()66L,6.' ;* h* ;* h*

(WTA):E,' ;* h* h* h*

JV)//,:.' ;* h* h* h*

J:15Y.' ;* h* ;* h*

a)H)';1S,Q,/H' ;* ;* ;* h*

a)H)'>H6,)Q.' ;* h* h* h*

9QI:L5LH'O)6)::,:L.Q' ;* h* ;* h*

9.1:)R1/' ;* h* h* h*

N15):LHW' ;* ;* ;* h*

!"#"$#%&' %8'

@,_EL6,'A;'>EII16H' OP' N9(' >B;' OB@7'

;)I#@,*E5,' ;* h* h* ;*

;,..)K,'.,/*.' ;* h* h* h*

;L6616.' ;* h* ;* h*

+1T9/H,65,..L1/' ;* h* h* h*

[-/,6.VLI' ;* ;* ;* h*

O,6.L.H,/H'a)H)'>H6E5HE6,.' ;* h* h* ;*

@,I:L5)R1/' ;* h* h* ;*

>L*,TBb,5H'76,,' ;* ;* h* h*

>I,5E:)RS,'B`,5ER1/' ;* ;* h* h*

U6)/.)5R1/.' ;* h* h* h*

UEI:,'>I)5,.' ;* h* h* ;*

A)H.' ;* h* h* h*

A,5H16'[I,6)R1/.' ;* h* ;* h*

Page 14: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

>83L#'*72$.680(2$*

•  O+3+66#6*.2$.#540*+0*6(:3+3(#0*– b23*&23*L#3'*05#.(m.*25%1(V+%2$0d*

•  72$.833#$.'*.2$.#540*3#X8(3#*=-*0855234*– P23*5#3&231+$.#*– G$&23.#*#$.+5086+%2$?*(1184+:(6(4'*– G$&23.#*+0'$.^*#g#.8%2$?*o*

!"#"$#%&' %$'

Page 15: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

A#"8.#"*j#X8(3#1#$40*&23*=-0*

!"#"$#%&' %4'

-+$+)#"*-84+%2$*

-+$+)#"*Gg#.8%2$*

p2%2$*2&*FE$#30/(5*

72$43266+:6#*G$&23.#1#$4*

Page 16: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

J[+J?@@B+JC'a[;P9+>'G$&23.($)*>#1+$%.0*E(4/*+*-#4+;2:[#.4*O3242.26*

!"#"$#%&' %='

Page 17: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

72$.833#$.'*A21+($0M*FE$#30/(5;:+0#"*-#4+2:[#.4*O3242.26*

!"#"$#%&' %3'

readField(obj, idx)writeField(obj, idx, val)reqExec(obj, method, args)newThread(closure)readGlobal(glob)writeGlobal(glob, val)primitiveCopy(obj)primitive*(...)

DomainObject

10..*

owned by

10..*

runs inenforced : bool

Thread

Page 18: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

A21+($*#$&23.($)*!1184+:(6(4'*

!"#"$#%&' %D'

Main Cell with #foo Immutable Domain

enforced

cell.set(#bar)

cell.set(#bar) → reqExec(cell, set, #bar)

writeToField(cell, 1, #bar)

ImmutabilityError(cell, 1, #bar)

cell = new Cell()

cell.set(#foo)

domain.adopt(cell)

enforced()

Page 19: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

A21+($*A#m$(%2$*@*'--,7BBK5B'$3,09/038-,K5B'$3,_,,,,45$8,!"#$%&'(#%)*H5%`L,$89L,4'*M,_,,,,,/A&5U,30U,7BBQ/'%$*$/(2&&5&H5%`L$89L4'*MN,,,a,,,,45$8,+"#,-.$/0$15%`L,$89L,4'*M,_,,,,,/A&5U,30U,7BBQ/'%$*$/(2&&5&H5%`L$89L4'*MN,,,a,,,"",R,'**,BQ/'/$3O,560&'/$53-,b,6&$B$/$40-,a,

!"#"$#%&' &%'

Page 20: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

BAPN?PU9[+'9$"?*"2#0*(4*0.+6#N*

!"#"$#%&' &&'

Page 21: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

Gg53#00(L#$#00M*762[83#B0*9)#$40*J:)..' c;,HV1*.' N[J'PK,/H'd)*TV15ef' e* HK*

!"#"$#%&' &!'

J:)..' c;,HV1*.' N[J'PK,/H' e* RK*PK,/Ha1Q)L/' R* HR*9QQEH)F:,a1Q)L/' n* Ki*

%3' D&'

qE(4/284*#$&23.#1#$4*2&*0#1+$%.0*

Page 22: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

Gg53#00(L#$#00*($*<F7*

P*TV15' [-/,6.VLITF).,*';[O'

PK,/H.' HKq* iH*>U;' een** Kni*PQFL,/HU):Y>U' KnH* KKT*P5RS,[FG,5H.' ;* iH*J>Ogπ' ;* HS*-FO*:+0#*0'04#1* KIne*

!"#"$#%&' &8'

qE(4/284*#$&23.#1#$4*2&*0#1+$%.0*

Page 23: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

O#3&231+$.#*!156#1#$4+%2$M*Q'4#.2"#*@3+$0&231+%2$*

!"#"$#%&' &$'

Bina

ry T

rees

(AT)

Fann

kuch

Redu

x (A

T)

Fast

a (A

T)

NBod

y (A

T)

Bina

ry T

rees

(LR)

Fann

kuch

Redu

x (L

R)

Fast

a (L

R)

NBod

y (L

R)

0.0

0.2

0.4

0.6

0.8

1.0

1.2

Kernel Benchmarks

Spee

d Ra

tio: A

d−ho

c/M

OP−

base

d

Arra

y Ac

cess

(AT)

Inst

ance

Var

. (AT

)

Loca

l Sen

ds (A

T)

Rem

ote

Send

s (A

T)

Rem

ote

Send

s (A

T)wi

th 1

0 ar

gum

ents

Arra

y Ac

cess

(LR)

Inst

ance

Var

. (LR

)

Send

s (L

R)

Send

s (L

R)wi

th 1

0 ar

gum

ents

0.0

0.2

0.4

0.6

0.8

1.0

1.2

Microbenchmarks

Spee

d Ra

tio: A

d−ho

c/M

OP−

base

d

91:(#$4@+6Y>@* >@-*

Page 24: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

J[+JN?>9[+>'

!"#"$#%&' &4'

Page 25: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

!"#$%m#"*j#X8(3#1#$40*&23*,$(&'($)*9:043+.%2$*

!"#"$#%&' &='

-+$+)#"*-84+%2$*

-+$+)#"*Gg#.8%2$*

p2%2$*2&*FE$#30/(5**

7436^*G$&23.#1#$4*j#X8(3#1#$40*:+0#"*2$*083L#'*

Page 26: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

FE$#30/(5;:+0#"*-FO*+0*72$.833#$.'*9:043+.%2$*&23*=-0*

!"#"$#%&' &3'

FE$#30/(5;:+0#"*-FO*+0*.2112$*&28$"+%2$*

9)#$40*

91:(#$4@+6Y>@*

7>Ocπ*

>@-*

9.%L#F:[#.40*

readField(obj, idx)writeField(obj, idx, val)reqExec(obj, method, args)newThread(closure)readGlobal(glob)writeGlobal(glob, val)primitiveCopy(obj)primitive*(...)

DomainObject

10..*

owned by

10..*

runs inenforced : bool

Thread

Page 27: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

P8483#*]23Y*

•  =-*>855234*– U2+6M*:#*5#3&231+$.#*$#843+6*– Q+0#"*2$*7O,B0*-#123'*-+$+)#1#$4*,$(4*– >E##4*0524M*7>O?*9.4230?*9.%L#*F:[#.40?o*

•  !$4#3+.%$)*72$.833#$.'*-2"#60*– 9.4230*c*>@-?o*– >#1+$%.0*

!"#"$#%&' &D'

Page 28: Identifying A Unifying Mechanism for the Implementation of Concurrency Abstractions on Multi-Language Virtual Machines

l*a*9'


Top Related