VMs are not that complex (rly)
Upcoming SlideShare
Loading in...5
×
 

VMs are not that complex (rly)

on

  • 1,157 views

montreal.rb about VMs

montreal.rb about VMs

Statistics

Views

Total Views
1,157
Views on SlideShare
1,155
Embed Views
2

Actions

Likes
2
Downloads
5
Comments
0

2 Embeds 2

http://static.slideshare.net 1
http://www.techgig.com 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />

VMs are not that complex (rly) VMs are not that complex (rly) Presentation Transcript

  • hey Wednesday, February 18, 2009
  • Marc-André Cournoyer Certified RMM Auditor Wednesday, February 18, 2009
  • VM Wednesday, February 18, 2009
  • Plan 1. Make Presentation 2. ??? 3. Profit Wednesday, February 18, 2009
  • VM Wednesday, February 18, 2009
  • JVM Wednesday, February 18, 2009
  • JVM (c) Threadless Wednesday, February 18, 2009
  • M$ Wednesday, February 18, 2009
  • CLR Wednesday, February 18, 2009
  • Lua Wednesday, February 18, 2009
  • Wednesday, February 18, 2009
  • Python Wednesday, February 18, 2009
  • Ruby 1.9 Wednesday, February 18, 2009
  • Rubinius Wednesday, February 18, 2009
  • VMs Wednesday, February 18, 2009
  • VMs are Wednesday, February 18, 2009
  • VMs are like Wednesday, February 18, 2009
  • VMs are like Wednesday, February 18, 2009
  • #TODO insert philosophical # explanation here Wednesday, February 18, 2009
  • VMs Wednesday, February 18, 2009
  • VMs are Wednesday, February 18, 2009
  • VMs are not Wednesday, February 18, 2009
  • VMs are not that Wednesday, February 18, 2009
  • VMs are Complex not that Wednesday, February 18, 2009
  • but Wednesday, February 18, 2009
  • butnobody Wednesday, February 18, 2009
  • butnobody wants Wednesday, February 18, 2009
  • Youwants butnobody Wednesday, February 18, 2009
  • Youwants butnobody to know Wednesday, February 18, 2009
  • Youwants butnobody it to know Wednesday, February 18, 2009
  • Wednesday, February 18, 2009
  • Wednesday, February 18, 2009
  • ZOMG MATZ!!!! *faints* Wednesday, February 18, 2009
  • hey ZOMG MATZ!!!! *faints* Wednesday, February 18, 2009
  • hey Guaranteed! ZOMG MATZ!!!! *faints* Wednesday, February 18, 2009
  • Rubinius Wednesday, February 18, 2009
  • Rubinius is a Wednesday, February 18, 2009
  • Rubinius is a semi-self Wednesday, February 18, 2009
  • Rubinius is a semi-self hosted Wednesday, February 18, 2009
  • Rubinius is a stackless spaghetti semi-self hosted Wednesday, February 18, 2009
  • Rubinius is a stackless spaghetti semi-self hosted stack based stack stack Wednesday, February 18, 2009
  • Rubinius is a stackless spaghetti semi-self VM hosted stack based stack stack Wednesday, February 18, 2009
  • Rubinius is a stackless spaghetti semi-self VM hosted stack based stack stack with direct . threaded dispatch Wednesday, February 18, 2009
  • Rubinius is a stackless spaghetti semi-self VM hosted stack based stack stack with direct . threaded dispatch monomorphic inline cache Wednesday, February 18, 2009
  • Rubinius is a stackless spaghetti semi-self VM hosted stack based stack stack with direct . threaded dispatch monomorphic inline cache generational GC Wednesday, February 18, 2009
  • Rubinius is a stackless spaghetti semi-self VM hosted stack based stack stack with direct . threaded dispatch monomorphic inline cache mark & sweep generational GC Wednesday, February 18, 2009
  • Rubinius is a stackless spaghetti semi-self VM hosted stack based stack stack with direct . threaded dispatch monomorphic inline cache ollector mark & sweep generational GC Wednesday, February 18, 2009
  • Wednesday, February 18, 2009
  • no Wednesday, February 18, 2009
  • (rly) Wednesday, February 18, 2009
  • “new” Wednesday, February 18, 2009
  • “new” stuff Wednesday, February 18, 2009
  • Rubinius “new” stuff Wednesday, February 18, 2009
  • Wednesday, February 18, 2009
  • 1969 Wednesday, February 18, 2009
  • Wednesday, February 18, 2009
  • Wednesday, February 18, 2009
  • Rey Mendoza Jr. Wednesday, February 18, 2009
  • you = quot;smellquot; if x == 1 puts you end Wednesday, February 18, 2009
  • Wednesday, February 18, 2009
  • you = quot;smellquot; if x == 1 puts you end Lexer [:id,quot;youquot;],[:=],[:str,quot;smellquot;],[:newln], [:if],[:id,quot;xquot;],[:==],[:int,1],[:newln], [:id,quot;putsquot;],[:id,quot;youquot;],[:newln], [:end] Wednesday, February 18, 2009
  • Wednesday, February 18, 2009
  • [:id,quot;youquot;],[:=],[:str,quot;smellquot;],[:newln], [:if],[:id,quot;xquot;],[:==],[:int,1],[:newln], [:id,quot;putsquot;],[:id,quot;youquot;],[:newln], [:end] Parser s(:block, s(:lasgn, :you, s(:str, quot;smellquot;)), s(:if, s(:call, s(:vcall, :x), :==, s(:array, s(:lit, 1))), s(:fcall, :puts, s(:array, s(:lvar, :you))), nil)) Wednesday, February 18, 2009
  • Wednesday, February 18, 2009
  • s(:block, s(:lasgn, :you, s(:str, quot;smellquot;)), s(:if, s(:call, s(:vcall, :x), :==, s(:array, s(:lit, 1))), s(:fcall, :puts, s(:array, s(:lvar, :you))), nil)) Compiler 019 000 002 002 015 046 001 000 000 024 000 018 001 046 002 001 000 000 000 054 003 001 002 046 004 001 000 008 000 049 003 049 Wednesday, February 18, 2009
  • 0000 putstring quot;smellquot; 0002 setlocal you 0004 putnil 0005 send :x, 0 0011 putobject 1 0013 send :==, 1 0019 branchunless 31 0021 putnil 0022 getlocal you 0024 send :puts, 1 0030 leave 0031 putnil 0032 leave Wednesday, February 18, 2009
  • 0004 putnil 0005 send :x, 0 0011 putobject 1 0013 send :==, 1 0019 branchunless 31 0021 putnil 0022 getlocal you Wednesday, February 18, 2009
  • 0004 putnil 0005 send :x, 0 0011 putobject 1 opcode operands instruction 0013 send :==, 1 0019 branchunless 31 0021 putnil 0022 getlocal you Wednesday, February 18, 2009
  • puts 1 + 2 stack putobject 1 putobject 2 send :+, 1, 0 send :puts, 1, 8 Wednesday, February 18, 2009
  • puts 1 + 2 stack putobject 1 putobject 2 send :+, 1, 0 send :puts, 1, 8 Wednesday, February 18, 2009
  • puts 1 + 2 stack putobject 1 1 putobject 2 send :+, 1, 0 send :puts, 1, 8 Wednesday, February 18, 2009
  • puts 1 + 2 stack putobject 1 2 1 putobject 2 1 send :+, 1, 0 send :puts, 1, 8 Wednesday, February 18, 2009
  • puts 1 + 2 stack putobject 1 3 2 1 putobject 2 1 send :+, 1, 0 send :puts, 1, 8 Wednesday, February 18, 2009
  • puts 1 + 2 stack putobject 1 nil 3 2 1 putobject 2 1 send :+, 1, 0 send :puts, 1, 8 3 Wednesday, February 18, 2009
  • while (true) { switch (inst->op) { case SEND: ... case PUTOBJECT: ... case PUTSTRING: ... case PUTNIL: ... case SETLOCAL: ... case GETLOCAL: ... case RETURN: return; } inst++; } Wednesday, February 18, 2009
  • github.com/macournoyer/tinyrb #tinyrb on freenode Wednesday, February 18, 2009
  • thx Wednesday, February 18, 2009