From c32e392ca52213ff0ed9ae0966200de36a34c1b2 Mon Sep 17 00:00:00 2001 From: kddnewton Date: Mon, 4 Apr 2022 20:00:27 +0000 Subject: [PATCH 01/63] deploy: 1def20e30f681b6b4e212f545f2c5f00b4456a4a --- .nojekyll | 0 README.md | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 .nojekyll create mode 100644 README.md diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md new file mode 100644 index 0000000..b3009a1 --- /dev/null +++ b/README.md @@ -0,0 +1,119 @@ +# YARV Instructions + +Below is a list of the YARV instructions that this project has documented so far. + +- [leave](#leave) +- [opt_plus](#opt_plus) +- [opt_send_without_block](#opt_send_without_block) +- [putobject](#putobject) +- [putself](#putself) + +## leave + +### Summary + +`leave` exits the current frame. + +### TracePoint + +`leave` does not dispatch any events. + +### Usage + +```ruby +;; + +# == disasm: #@-e:1 (1,0)-(1,2)> (catch: FALSE) +# 0000 putnil +# 0001 leave +``` + +## opt_plus + +### Summary + +`opt_plus` is a specialization of the `opt_send_without_block` instruction +that occurs when the `+` operator is used. In CRuby, there are fast paths +for if both operands are integers, floats, strings, or arrays. + +### TracePoint + +`opt_plus` can dispatch both the `c_call` and `c_return` events. + +### Usage + +```ruby +2 + 3 + +# == disasm: #@-e:1 (1,0)-(1,5)> (catch: FALSE) +# 0000 putobject 2 ( 1)[Li] +# 0002 putobject 3 +# 0004 opt_plus [CcCr] +# 0006 leave +``` + +## opt_send_without_block + +### Summary + +`opt_send_without_block` is a specialization of the send instruction that +occurs when a method is being called without a block. + +### TracePoint + +`opt_send_without_block` does not dispatch any events. + +### Usage + +```ruby +puts "Hello, world!" + +# == disasm: #@-e:1 (1,0)-(1,20)> (catch: FALSE) +# 0000 putself ( 1)[Li] +# 0001 putstring "Hello, world!" +# 0003 opt_send_without_block +# 0005 leave +``` + +## putobject + +### Summary + +`putobject` pushes a known value onto the stack. + +### TracePoint + +`putobject` can dispatch the line event. + +### Usage + +```ruby +5 + +# == disasm: #@-e:1 (1,0)-(1,1)> (catch: FALSE) +# 0000 putobject 5 ( 1)[Li] +# 0002 leave +``` + +## putself + +### Summary + +`putself` pushes the current value of self onto the stack. + +### TracePoint + +`putself` can dispatch the line event. + +### Usage + +```ruby +puts "Hello, world!" + +# == disasm: #@-e:1 (1,0)-(1,20)> (catch: FALSE) +# 0000 putself ( 1)[Li] +# 0001 putstring "Hello, world!" +# 0003 opt_send_without_block +# 0005 leave +``` + From 92e4cf2e5116d9a8835a9f3a31b109b0a81d71fc Mon Sep 17 00:00:00 2001 From: kddnewton Date: Mon, 4 Apr 2022 20:12:15 +0000 Subject: [PATCH 02/63] deploy: 160f46d96b06e6870ef037715d899c2ee517ae1c --- README.md | 119 ------------------------------------------------- index.html | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+), 119 deletions(-) delete mode 100644 README.md create mode 100644 index.html diff --git a/README.md b/README.md deleted file mode 100644 index b3009a1..0000000 --- a/README.md +++ /dev/null @@ -1,119 +0,0 @@ -# YARV Instructions - -Below is a list of the YARV instructions that this project has documented so far. - -- [leave](#leave) -- [opt_plus](#opt_plus) -- [opt_send_without_block](#opt_send_without_block) -- [putobject](#putobject) -- [putself](#putself) - -## leave - -### Summary - -`leave` exits the current frame. - -### TracePoint - -`leave` does not dispatch any events. - -### Usage - -```ruby -;; - -# == disasm: #@-e:1 (1,0)-(1,2)> (catch: FALSE) -# 0000 putnil -# 0001 leave -``` - -## opt_plus - -### Summary - -`opt_plus` is a specialization of the `opt_send_without_block` instruction -that occurs when the `+` operator is used. In CRuby, there are fast paths -for if both operands are integers, floats, strings, or arrays. - -### TracePoint - -`opt_plus` can dispatch both the `c_call` and `c_return` events. - -### Usage - -```ruby -2 + 3 - -# == disasm: #@-e:1 (1,0)-(1,5)> (catch: FALSE) -# 0000 putobject 2 ( 1)[Li] -# 0002 putobject 3 -# 0004 opt_plus [CcCr] -# 0006 leave -``` - -## opt_send_without_block - -### Summary - -`opt_send_without_block` is a specialization of the send instruction that -occurs when a method is being called without a block. - -### TracePoint - -`opt_send_without_block` does not dispatch any events. - -### Usage - -```ruby -puts "Hello, world!" - -# == disasm: #@-e:1 (1,0)-(1,20)> (catch: FALSE) -# 0000 putself ( 1)[Li] -# 0001 putstring "Hello, world!" -# 0003 opt_send_without_block -# 0005 leave -``` - -## putobject - -### Summary - -`putobject` pushes a known value onto the stack. - -### TracePoint - -`putobject` can dispatch the line event. - -### Usage - -```ruby -5 - -# == disasm: #@-e:1 (1,0)-(1,1)> (catch: FALSE) -# 0000 putobject 5 ( 1)[Li] -# 0002 leave -``` - -## putself - -### Summary - -`putself` pushes the current value of self onto the stack. - -### TracePoint - -`putself` can dispatch the line event. - -### Usage - -```ruby -puts "Hello, world!" - -# == disasm: #@-e:1 (1,0)-(1,20)> (catch: FALSE) -# 0000 putself ( 1)[Li] -# 0001 putstring "Hello, world!" -# 0003 opt_send_without_block -# 0005 leave -``` - diff --git a/index.html b/index.html new file mode 100644 index 0000000..93a2603 --- /dev/null +++ b/index.html @@ -0,0 +1,127 @@ + + + + + + YARV + + +

YARV Instructions

+ +

Below is a list of the YARV instructions that this project has documented so far.

+ + + +

leave

+ +

Summary

+ +

leave exits the current frame.

+ +

TracePoint

+ +

leave does not dispatch any events.

+ +

Usage

+ +
;;
+
+# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,2)> (catch: FALSE)
+# 0000 putnil
+# 0001 leave
+
+ +

opt_plus

+ +

Summary

+ +

opt_plus is a specialization of the opt_send_without_block instruction +that occurs when the + operator is used. In CRuby, there are fast paths +for if both operands are integers, floats, strings, or arrays.

+ +

TracePoint

+ +

opt_plus can dispatch both the c_call and c_return events.

+ +

Usage

+ +
2 + 3
+
+# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,5)> (catch: FALSE)
+# 0000 putobject                              2                         (   1)[Li]
+# 0002 putobject                              3
+# 0004 opt_plus                               <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
+# 0006 leave
+
+ +

opt_send_without_block

+ +

Summary

+ +

opt_send_without_block is a specialization of the send instruction that +occurs when a method is being called without a block.

+ +

TracePoint

+ +

opt_send_without_block does not dispatch any events.

+ +

Usage

+ +
puts "Hello, world!"
+
+# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,20)> (catch: FALSE)
+# 0000 putself                                                          (   1)[Li]
+# 0001 putstring                              "Hello, world!"
+# 0003 opt_send_without_block                 <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE>
+# 0005 leave
+
+ +

putobject

+ +

Summary

+ +

putobject pushes a known value onto the stack.

+ +

TracePoint

+ +

putobject can dispatch the line event.

+ +

Usage

+ +
5
+
+# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,1)> (catch: FALSE)
+# 0000 putobject                              5                         (   1)[Li]
+# 0002 leave
+
+ +

putself

+ +

Summary

+ +

putself pushes the current value of self onto the stack.

+ +

TracePoint

+ +

putself can dispatch the line event.

+ +

Usage

+ +
puts "Hello, world!"
+
+# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,20)> (catch: FALSE)
+# 0000 putself                                                          (   1)[Li]
+# 0001 putstring                              "Hello, world!"
+# 0003 opt_send_without_block                 <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE>
+# 0005 leave
+
+ + + + From 168e96dfad92303f32d9a9fb1a78dad9faf72258 Mon Sep 17 00:00:00 2001 From: kddnewton Date: Mon, 9 May 2022 14:28:13 +0000 Subject: [PATCH 03/63] deploy: f7ef6b87f7a3c2d739f9eb2d94a6ed7835a51974 --- index.html | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/index.html b/index.html index 93a2603..69942f4 100644 --- a/index.html +++ b/index.html @@ -14,6 +14,7 @@

YARV Instructions

  • leave
  • opt_plus
  • opt_send_without_block
  • +
  • opt_str_uminus
  • putobject
  • putself
  • @@ -82,18 +83,38 @@

    Usage

    # 0005 leave -

    putobject

    +

    opt_str_uminus

    Summary

    -

    putobject pushes a known value onto the stack.

    +

    opt_str_uminus pushes a frozen known string value with no interpolation +onto the stack.

    TracePoint

    -

    putobject can dispatch the line event.

    +

    opt_str_uminus does not dispatch any events.

    Usage

    +
    -"string"
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,6)> (catch: FALSE)
    +# 0000 opt_str_uminus                         "string", <calldata!mid:-@, argc:0, ARGS_SIMPLE>(   1)[Li]
    +# 0003 leave 
    +
    + +

    putobject

    + +

    Summary

    + +

    putobject pushes a known value onto the stack.

    + +

    TracePoint

    + +

    putobject can dispatch the line event.

    + +

    Usage

    +
    5
     
     # == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,1)> (catch: FALSE)
    @@ -103,15 +124,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    
    From 2f6d6c4f64bfac15995be6d94c1e80af2331a170 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 9 May 2022 14:29:40 +0000
    Subject: [PATCH 04/63] deploy: 127df5b8d1be2520282fc25e33ddeffe34b7cb48
    
    ---
     index.html | 54 +++++++++++++++++++++++++++++++++++++++---------------
     1 file changed, 39 insertions(+), 15 deletions(-)
    
    diff --git a/index.html b/index.html
    index 69942f4..31b86b0 100644
    --- a/index.html
    +++ b/index.html
    @@ -12,6 +12,7 @@ 

    YARV Instructions

    -

    opt_plus

    +

    opt_minus

    Summary

    +

    opt_minus is a specialization of the opt_send_without_block instruction +that occurs when the - operator is used. In CRuby, there are fast paths +for if both operands are integers or both operands are floats.

    + +

    TracePoint

    + +

    opt_minus can dispatch both the c_call and c_return events.

    + +

    Usage

    + +
    3 - 2
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)
    +# 0000 putobject                              3                         (   1)[Li]                                  
    +# 0002 putobject                              2                                                                     
    +# 0004 opt_minus                              <calldata!mid:-, argc:1, ARGS_SIMPLE>[CcCr]                           
    +# 0006 leave  
    +
    + +

    opt_plus

    + +

    Summary

    +

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -63,16 +87,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -85,16 +109,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -105,15 +129,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -124,15 +148,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    
    From 2a501d14d9b70243e63584b4dc4482195679e444 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 9 May 2022 15:07:46 +0000
    Subject: [PATCH 05/63] deploy: 0842d779df4018f0b0a7e4caf8995dd63a5f58f3
    
    ---
     index.html | 62 ++++++++++++++++++++++++++++++++++++------------------
     1 file changed, 41 insertions(+), 21 deletions(-)
    
    diff --git a/index.html b/index.html
    index 31b86b0..2539a0e 100644
    --- a/index.html
    +++ b/index.html
    @@ -11,6 +11,7 @@ 

    YARV Instructions

    Below is a list of the YARV instructions that this project has documented so far.

    -

    leave

    +

    getglobal

    Summary

    -

    leave exits the current frame.

    +

    getglobal pushes the value of a global variables onto the stack.

    TracePoint

    -

    leave does not dispatch any events.

    +

    getglobal does not dispatch any events.

    Usage

    +
    $$
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,2)> (catch: FALSE)
    +# 0000 getglobal                              :$$                       (   1)[Li]    
    +# 0002 leave  
    +
    + +

    leave

    + +

    Summary

    + +

    leave exits the current frame.

    + +

    TracePoint

    + +

    leave does not dispatch any events.

    + +

    Usage

    +
    ;;
     
     # == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,2)> (catch: FALSE)
    @@ -41,17 +61,17 @@ 

    Usage

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -64,17 +84,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -87,16 +107,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -109,16 +129,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -129,15 +149,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -148,15 +168,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    
    From 864bf36a951298f62742e3a9c51819d8a4b5fe8e Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 9 May 2022 15:18:07 +0000
    Subject: [PATCH 06/63] deploy: c7acc9fcd19a4f96e9af9656c478e832590ec1c1
    
    ---
     index.html | 92 ++++++++++++++++++++++++++++++++++++++++--------------
     1 file changed, 68 insertions(+), 24 deletions(-)
    
    diff --git a/index.html b/index.html
    index 2539a0e..c8be27b 100644
    --- a/index.html
    +++ b/index.html
    @@ -11,6 +11,7 @@ 

    YARV Instructions

    Below is a list of the YARV instructions that this project has documented so far.

    -

    getglobal

    +

    dup

    Summary

    -

    getglobal pushes the value of a global variables onto the stack.

    +

    dup copies the top value of the stack and pushes it onto the stack.

    TracePoint

    -

    getglobal does not dispatch any events.

    +

    dup does not dispatch any events.

    Usage

    +
    $global = 5
    +
    +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,11)> (catch: FALSE)
    +# 0000 putobject                              5                         (   1)[Li]
    +# 0002 dup
    +# 0003 setglobal                              :$global
    +# 0005 leave
    +
    + +

    getglobal

    + +

    Summary

    + +

    getglobal pushes the value of a global variables onto the stack.

    + +

    TracePoint

    + +

    getglobal does not dispatch any events.

    + +

    Usage

    +
    $$
     
     # == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,2)> (catch: FALSE)
    @@ -42,15 +65,15 @@ 

    Usage

    leave

    -

    Summary

    +

    Summary

    leave exits the current frame.

    -

    TracePoint

    +

    TracePoint

    leave does not dispatch any events.

    -

    Usage

    +

    Usage

    ;;
     
    @@ -61,17 +84,17 @@ 

    Usage

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -84,17 +107,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -107,16 +130,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -129,16 +152,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -149,15 +172,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -168,15 +191,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -187,6 +210,27 @@ 

    Usage

    # 0005 leave
    +

    setglobal

    + +

    Summary

    + +

    setglobal sets the value of a global variable.

    + +

    TracePoint

    + +

    setglobal does not dispatch any events.

    + +

    Usage

    + +
    $global = 5
    +
    +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,11)> (catch: FALSE)
    +# 0000 putobject                              5                         (   1)[Li]
    +# 0002 dup
    +# 0003 setglobal                              :$global
    +# 0005 leave
    +
    + From c00d39e31debaedbc1a7f36be430283361fb68ec Mon Sep 17 00:00:00 2001 From: kddnewton Date: Mon, 9 May 2022 15:20:34 +0000 Subject: [PATCH 07/63] deploy: 6dee6f9543e97794ada589b560f471d017009c3a --- index.html | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/index.html b/index.html index c8be27b..4b6ef32 100644 --- a/index.html +++ b/index.html @@ -20,6 +20,7 @@

    YARV Instructions

  • opt_str_uminus
  • putobject
  • putself
  • +
  • putstring
  • setglobal
  • @@ -210,18 +211,37 @@

    Usage

    # 0005 leave
    -

    setglobal

    +

    putstring

    Summary

    -

    setglobal sets the value of a global variable.

    +

    putstring pushes a string literal onto the stack.

    TracePoint

    -

    setglobal does not dispatch any events.

    +

    putstring can dispatch the line event.

    Usage

    +
    "foo"
    +
    += disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)
    +000 putstring                              "foo"                     (   1)[Li]                                  
    +002 leave 
    +
    + +

    setglobal

    + +

    Summary

    + +

    setglobal sets the value of a global variable.

    + +

    TracePoint

    + +

    setglobal does not dispatch any events.

    + +

    Usage

    +
    $global = 5
     
     # == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,11)> (catch: FALSE)
    
    From ba6ee048609c936c3ff19f3c6c755d638d0079f2 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 9 May 2022 15:20:41 +0000
    Subject: [PATCH 08/63] deploy: 41864cf91d4f0a88b7179c27dcb06b0b34f7a6cd
    
    ---
     index.html | 10 +++++-----
     1 file changed, 5 insertions(+), 5 deletions(-)
    
    diff --git a/index.html b/index.html
    index 4b6ef32..60d31c0 100644
    --- a/index.html
    +++ b/index.html
    @@ -100,10 +100,10 @@ 

    Usage

    3 - 2
     
     # == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)
    -# 0000 putobject                              3                         (   1)[Li]                                  
    -# 0002 putobject                              2                                                                     
    -# 0004 opt_minus                              <calldata!mid:-, argc:1, ARGS_SIMPLE>[CcCr]                           
    -# 0006 leave  
    +# 0000 putobject                              3                         (   1)[Li]
    +# 0002 putobject                              2
    +# 0004 opt_minus                              <calldata!mid:-, argc:1, ARGS_SIMPLE>[CcCr]
    +# 0006 leave
     

    opt_plus

    @@ -168,7 +168,7 @@

    Usage

    # == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,6)> (catch: FALSE) # 0000 opt_str_uminus "string", <calldata!mid:-@, argc:0, ARGS_SIMPLE>( 1)[Li] -# 0003 leave +# 0003 leave

    putobject

    From e076de42910b73bf98b03f9bb45e8677f845a4cb Mon Sep 17 00:00:00 2001 From: kddnewton Date: Mon, 9 May 2022 15:53:40 +0000 Subject: [PATCH 09/63] deploy: 8a87e36f60d19ef9bbb9606ef03be2c8cd411930 --- index.html | 73 ++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 49 insertions(+), 24 deletions(-) diff --git a/index.html b/index.html index 60d31c0..b3b87b3 100644 --- a/index.html +++ b/index.html @@ -14,6 +14,7 @@

    YARV Instructions

  • dup
  • getglobal
  • leave
  • +
  • opt_and
  • opt_minus
  • opt_plus
  • opt_send_without_block
  • @@ -83,19 +84,43 @@

    Usage

    # 0001 leave
    -

    opt_minus

    +

    opt_and

    Summary

    +

    opt_and is a specialization of the opt_send_without_block instruction +that occurs when the & operator is used. In CRuby, there are fast paths +for if both operands are integers.

    + +

    TracePoint

    + +

    opt_and can dispatch both the c_call and c_return events.

    + +

    Usage

    + +
    2 & 3
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)                                      │~
    +# 0000 putobject                              2                         (   1)[Li]                           │~
    +# 0002 putobject                              3                                                              │~
    +# 0004 opt_and                                <calldata!mid:&, argc:1, ARGS_SIMPLE>[CcCr]                    │~
    +# 0006 leave
    +
    +
    + +

    opt_minus

    + +

    Summary

    +

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -108,17 +133,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -131,16 +156,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -153,16 +178,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -173,15 +198,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -192,15 +217,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -213,15 +238,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -232,15 +257,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    
    From 254c4d98f7e3e86d99f0d6c3ba92b8bc136b1bff Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 9 May 2022 15:55:59 +0000
    Subject: [PATCH 10/63] deploy: c7710fd5af403dbb9efe0d5ae42aa7083ca19760
    
    ---
     index.html | 140 ++++++++++++++++++++++++++++++++++++++++-------------
     1 file changed, 107 insertions(+), 33 deletions(-)
    
    diff --git a/index.html b/index.html
    index b3b87b3..b2ca898 100644
    --- a/index.html
    +++ b/index.html
    @@ -12,12 +12,15 @@ 

    YARV Instructions

    -

    getglobal

    +

    getconstant

    Summary

    -

    getglobal pushes the value of a global variables onto the stack.

    +

    getconstant performs a constant lookup and pushes the value of the +constant onto the stack.

    TracePoint

    -

    getglobal does not dispatch any events.

    +

    getconstant does not dispatch any events.

    Usage

    +
    Constant
    +
    +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,8)> (catch: FALSE)
    +# 0000 opt_getinlinecache                     9, <is:0>                 (   1)[Li]
    +# 0003 putobject                              true
    +# 0005 getconstant                            :Constant
    +# 0007 opt_setinlinecache                     <is:0>
    +# 0009 leave
    +
    + +

    getglobal

    + +

    Summary

    + +

    getglobal pushes the value of a global variables onto the stack.

    + +

    TracePoint

    + +

    getglobal does not dispatch any events.

    + +

    Usage

    +
    $$
     
     # == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,2)> (catch: FALSE)
    @@ -67,15 +93,15 @@ 

    Usage

    leave

    -

    Summary

    +

    Summary

    leave exits the current frame.

    -

    TracePoint

    +

    TracePoint

    leave does not dispatch any events.

    -

    Usage

    +

    Usage

    ;;
     
    @@ -86,17 +112,17 @@ 

    Usage

    opt_and

    -

    Summary

    +

    Summary

    opt_and is a specialization of the opt_send_without_block instruction that occurs when the & operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_and can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 & 3
     
    @@ -108,19 +134,43 @@ 

    Usage

    +

    opt_getinlinecache

    + +

    Summary

    + +

    opt_getinlinecache is a wrapper around a series of getconstant +instructions that allows skipping past them if the inline cache is currently +set.

    + +

    TracePoint

    + +

    opt_getinlinecache does not dispatch any events.

    + +

    Usage

    + +
    Constant
    +
    +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,8)> (catch: FALSE)
    +# 0000 opt_getinlinecache                     9, <is:0>                 (   1)[Li]
    +# 0003 putobject                              true
    +# 0005 getconstant                            :Constant
    +# 0007 opt_setinlinecache                     <is:0>
    +# 0009 leave
    +
    +

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -133,17 +183,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -156,16 +206,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -176,18 +226,42 @@ 

    Usage

    # 0005 leave
    +

    opt_setinlinecache

    + +

    Summary

    + +

    opt_setinlinecache is the final instruction after a series of +getconstant instructions that populates the inline cache associated with +an opt_getinlinecache instruction.

    + +

    TracePoint

    + +

    opt_setinlinecache does not dispatch any events.

    + +

    Usage

    + +
    Constant
    +
    +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,8)> (catch: FALSE)
    +# 0000 opt_getinlinecache                     9, <is:0>                 (   1)[Li]
    +# 0003 putobject                              true
    +# 0005 getconstant                            :Constant
    +# 0007 opt_setinlinecache                     <is:0>
    +# 0009 leave
    +
    +

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -198,15 +272,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -217,15 +291,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -238,15 +312,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -257,15 +331,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    
    From 3891a3b644ac56d0223be78e6c85acbed4e55f13 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 9 May 2022 16:08:36 +0000
    Subject: [PATCH 11/63] deploy: d0fd4886431c14e9bd0c8dc0405bfc82180a33ce
    
    ---
     index.html | 52 ++++++++++++++++++++++++++++++++++++++++------------
     1 file changed, 40 insertions(+), 12 deletions(-)
    
    diff --git a/index.html b/index.html
    index b2ca898..8dd781e 100644
    --- a/index.html
    +++ b/index.html
    @@ -22,6 +22,7 @@ 

    YARV Instructions

  • opt_send_without_block
  • opt_setinlinecache
  • opt_str_uminus
  • +
  • pop
  • putobject
  • putself
  • putstring
  • @@ -270,18 +271,45 @@

    Usage

    # 0003 leave
    -

    putobject

    +

    pop

    Summary

    -

    putobject pushes a known value onto the stack.

    +

    pop pops the top value off the stack.

    TracePoint

    -

    putobject can dispatch the line event.

    +

    pop does not dispatch any events.

    Usage

    +
    a ||= 2
    +
    +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,7)> (catch: FALSE)
    +# local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
    +# [ 1] a@0
    +# 0000 getlocal_WC_0                          a@0                       (   1)[Li]
    +# 0002 dup
    +# 0003 branchif                               11
    +# 0005 pop
    +# 0006 putobject                              2
    +# 0008 dup
    +# 0009 setlocal_WC_0                          a@0
    +# 0011 leave
    +
    + +

    putobject

    + +

    Summary

    + +

    putobject pushes a known value onto the stack.

    + +

    TracePoint

    + +

    putobject can dispatch the line event.

    + +

    Usage

    +
    5
     
     # == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,1)> (catch: FALSE)
    @@ -291,15 +319,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -312,15 +340,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -331,15 +359,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    
    From a943d0fa74e72bb212864cdb0a909c086f6421a4 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 9 May 2022 16:09:30 +0000
    Subject: [PATCH 12/63] deploy: d11451a70b7f166acd911ff11e33320232452461
    
    ---
     index.html | 89 ++++++++++++++++++++++++++++++++++--------------------
     1 file changed, 56 insertions(+), 33 deletions(-)
    
    diff --git a/index.html b/index.html
    index 8dd781e..2164030 100644
    --- a/index.html
    +++ b/index.html
    @@ -16,6 +16,7 @@ 

    YARV Instructions

  • getglobal
  • leave
  • opt_and
  • +
  • opt_empty_p
  • opt_getinlinecache
  • opt_minus
  • opt_plus
  • @@ -135,19 +136,41 @@

    Usage

    -

    opt_getinlinecache

    +

    opt_empty_p

    Summary

    +

    opt_empty_p is an optimisation applied when the method empty? is called +on a String, Array or a Hash. This optimisation can be applied because Ruby +knows how to calculate the length of these objects using internal C macros.

    + +

    TracePoint

    + +

    opt_empty_p can dispatch c_call and c_return events.

    + +

    Usage

    + +
    "".empty?
    +
    +#== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,9)> (catch: FALSE)
    +#0000 putstring                              ""                        (   1)[Li]                                  
    +#0002 opt_empty_p                            <calldata!mid:empty?, argc:0, ARGS_SIMPLE>[CcCr]                      
    +#0004 leave   
    +
    + +

    opt_getinlinecache

    + +

    Summary

    +

    opt_getinlinecache is a wrapper around a series of getconstant instructions that allows skipping past them if the inline cache is currently set.

    -

    TracePoint

    +

    TracePoint

    opt_getinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -161,17 +184,17 @@ 

    Usage

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -184,17 +207,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -207,16 +230,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -229,17 +252,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -253,16 +276,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -273,15 +296,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -300,15 +323,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -319,15 +342,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -340,15 +363,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -359,15 +382,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    
    From 7f3fa300100672812325912ef155f5d63c9d0458 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 9 May 2022 16:24:35 +0000
    Subject: [PATCH 13/63] deploy: 5aa02b1733f453538ad3aa85c1e5b37edf75df43
    
    ---
     index.html | 96 ++++++++++++++++++++++++++++++++++--------------------
     1 file changed, 60 insertions(+), 36 deletions(-)
    
    diff --git a/index.html b/index.html
    index 2164030..e5287f6 100644
    --- a/index.html
    +++ b/index.html
    @@ -16,6 +16,7 @@ 

    YARV Instructions

  • getglobal
  • leave
  • opt_and
  • +
  • opt_div
  • opt_empty_p
  • opt_getinlinecache
  • opt_minus
  • @@ -136,19 +137,42 @@

    Usage

    -

    opt_empty_p

    +

    opt_div

    Summary

    +

    opt_div is a specialization of the opt_send_without_block instruction +that occurs when the / operator is used. In CRuby, there are fast paths +for if both operands are integers, or if both operands are floats.

    + +

    TracePoint

    + +

    opt_div can dispatch both the c_call and c_return events.

    + +

    Usage

    + +
    2 / 3
    +
    +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,5)> (catch: FALSE)
    +# 0000 putobject                              2                         (   1)[Li]
    +# 0002 putobject                              3
    +# 0004 opt_div                                <calldata!mid:/, argc:1, ARGS_SIMPLE>[CcCr]
    +# 0006 leave
    +
    + +

    opt_empty_p

    + +

    Summary

    +

    opt_empty_p is an optimisation applied when the method empty? is called on a String, Array or a Hash. This optimisation can be applied because Ruby knows how to calculate the length of these objects using internal C macros.

    -

    TracePoint

    +

    TracePoint

    opt_empty_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".empty?
     
    @@ -160,17 +184,17 @@ 

    Usage

    opt_getinlinecache

    -

    Summary

    +

    Summary

    opt_getinlinecache is a wrapper around a series of getconstant instructions that allows skipping past them if the inline cache is currently set.

    -

    TracePoint

    +

    TracePoint

    opt_getinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -184,17 +208,17 @@ 

    Usage

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -207,17 +231,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -230,16 +254,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -252,17 +276,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -276,16 +300,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -296,15 +320,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -323,15 +347,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -342,15 +366,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -363,15 +387,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -382,15 +406,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    
    From bffffcdde50e5a02286f24a6b44214f1e45df5bc Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 9 May 2022 16:58:31 +0000
    Subject: [PATCH 14/63] deploy: b57ac2012b87a7bedec3ac1d9f8aee3b29fff12e
    
    ---
     index.html | 79 +++++++++++++++++++++++++++++++++++-------------------
     1 file changed, 52 insertions(+), 27 deletions(-)
    
    diff --git a/index.html b/index.html
    index e5287f6..10659ae 100644
    --- a/index.html
    +++ b/index.html
    @@ -20,6 +20,7 @@ 

    YARV Instructions

  • opt_empty_p
  • opt_getinlinecache
  • opt_minus
  • +
  • opt_or
  • opt_plus
  • opt_send_without_block
  • opt_setinlinecache
  • @@ -229,19 +230,43 @@

    Usage

    # 0006 leave
    -

    opt_plus

    +

    opt_or

    Summary

    +

    opt_or is a specialization of the opt_send_without_block instruction +that occurs when the | operator is used. In CRuby, there are fast paths +for if both operands are integers.

    + +

    TracePoint

    + +

    opt_or can dispatch both the c_call and c_return events.

    + +

    Usage

    + +
    2 | 3
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)                                      │~
    +# 0000 putobject                              2                         (   1)[Li]                           │~
    +# 0002 putobject                              3                                                              │~
    +# 0004 opt_or                                 <calldata!mid:|, argc:1, ARGS_SIMPLE>[CcCr]                    │~
    +# 0006 leave
    +
    +
    + +

    opt_plus

    + +

    Summary

    +

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -254,16 +279,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -276,17 +301,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -300,16 +325,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -320,15 +345,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -347,15 +372,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -366,15 +391,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -387,15 +412,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -406,15 +431,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    
    From dfec3c575f253e4e9aa0060cf3045fb604ff87ff Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 9 May 2022 17:15:34 +0000
    Subject: [PATCH 15/63] deploy: 097807f95f297f83afc70688341f3623215096f9
    
    ---
     index.html | 109 ++++++++++++++++++++++++++++++++---------------------
     1 file changed, 67 insertions(+), 42 deletions(-)
    
    diff --git a/index.html b/index.html
    index 10659ae..5620c65 100644
    --- a/index.html
    +++ b/index.html
    @@ -16,6 +16,7 @@ 

    YARV Instructions

  • getglobal
  • leave
  • opt_and
  • +
  • opt_aref
  • opt_div
  • opt_empty_p
  • opt_getinlinecache
  • @@ -138,19 +139,43 @@

    Usage

    -

    opt_div

    +

    opt_aref

    Summary

    +

    opt_aref is a specialization of the opt_send_without_block instruction +that occurs when the [] operator is used. In CRuby, there are fast paths +if the receiver is an integer, array, or hash.

    + +

    TracePoint

    + +

    opt_aref can dispatch both the c_call and c_return events.

    + +

    Usage

    + +
    7[2]
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)                                      │~
    +# 0000 putobject                              7                         (   1)[Li]                           │~
    +# 0002 putobject                              2                                                              │~
    +# 0004 opt_aref                               <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]                    │~
    +# 0006 leave
    +
    +
    + +

    opt_div

    + +

    Summary

    +

    opt_div is a specialization of the opt_send_without_block instruction that occurs when the / operator is used. In CRuby, there are fast paths for if both operands are integers, or if both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_div can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 / 3
     
    @@ -163,17 +188,17 @@ 

    Usage

    opt_empty_p

    -

    Summary

    +

    Summary

    opt_empty_p is an optimisation applied when the method empty? is called on a String, Array or a Hash. This optimisation can be applied because Ruby knows how to calculate the length of these objects using internal C macros.

    -

    TracePoint

    +

    TracePoint

    opt_empty_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".empty?
     
    @@ -185,17 +210,17 @@ 

    Usage

    opt_getinlinecache

    -

    Summary

    +

    Summary

    opt_getinlinecache is a wrapper around a series of getconstant instructions that allows skipping past them if the inline cache is currently set.

    -

    TracePoint

    +

    TracePoint

    opt_getinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -209,17 +234,17 @@ 

    Usage

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -232,17 +257,17 @@ 

    Usage

    opt_or

    -

    Summary

    +

    Summary

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -256,17 +281,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -279,16 +304,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -301,17 +326,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -325,16 +350,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -345,15 +370,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -372,15 +397,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -391,15 +416,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -412,15 +437,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -431,15 +456,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    
    From 581660ac9027d74dde3945df0840a4692c39df0d Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 9 May 2022 18:22:38 +0000
    Subject: [PATCH 16/63] deploy: 924a2b49115957b9b774ad63ee0a37c628408426
    
    ---
     index.html | 152 ++++++++++++++++++++++++++++++++---------------------
     1 file changed, 92 insertions(+), 60 deletions(-)
    
    diff --git a/index.html b/index.html
    index 5620c65..81a036e 100644
    --- a/index.html
    +++ b/index.html
    @@ -11,6 +11,7 @@ 

    YARV Instructions

    Below is a list of the YARV instructions that this project has documented so far.

    -

    dup

    +

    branchunless

    Summary

    -

    dup copies the top value of the stack and pushes it onto the stack.

    +

    branchunless has one argument, the jump index +and pops one value off the stack, the jump condition.

    + +

    If the value popped off the stack is false, +branchunless jumps to the jump index and continues executing there.

    TracePoint

    -

    dup does not dispatch any events.

    +

    There is no trace point for branchunless.

    Usage

    +
    if 2+3; puts 'foo'; end
    +
    +== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,22)> (catch: FALSE)
    +0000 putobject                              2                         (   1)[Li]
    +0002 putobject                              3
    +0004 opt_plus                               <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
    +0006 branchunless                           14
    +0008 putself
    +0009 putstring                              "hi"
    +0011 opt_send_without_block                 <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE>
    +0013 leave
    +0014 putnil
    +0015 leave
    +
    + +

    dup

    + +

    Summary

    + +

    dup copies the top value of the stack and pushes it onto the stack.

    + +

    TracePoint

    + +

    dup does not dispatch any events.

    + +

    Usage

    +
    $global = 5
     
     # == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,11)> (catch: FALSE)
    @@ -56,16 +88,16 @@ 

    Usage

    getconstant

    -

    Summary

    +

    Summary

    getconstant performs a constant lookup and pushes the value of the constant onto the stack.

    -

    TracePoint

    +

    TracePoint

    getconstant does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -79,15 +111,15 @@ 

    Usage

    getglobal

    -

    Summary

    +

    Summary

    getglobal pushes the value of a global variables onto the stack.

    -

    TracePoint

    +

    TracePoint

    getglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $$
     
    @@ -98,15 +130,15 @@ 

    Usage

    leave

    -

    Summary

    +

    Summary

    leave exits the current frame.

    -

    TracePoint

    +

    TracePoint

    leave does not dispatch any events.

    -

    Usage

    +

    Usage

    ;;
     
    @@ -117,17 +149,17 @@ 

    Usage

    opt_and

    -

    Summary

    +

    Summary

    opt_and is a specialization of the opt_send_without_block instruction that occurs when the & operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_and can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 & 3
     
    @@ -141,17 +173,17 @@ 

    Usage

    opt_aref

    -

    Summary

    +

    Summary

    opt_aref is a specialization of the opt_send_without_block instruction that occurs when the [] operator is used. In CRuby, there are fast paths if the receiver is an integer, array, or hash.

    -

    TracePoint

    +

    TracePoint

    opt_aref can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    7[2]
     
    @@ -165,17 +197,17 @@ 

    Usage

    opt_div

    -

    Summary

    +

    Summary

    opt_div is a specialization of the opt_send_without_block instruction that occurs when the / operator is used. In CRuby, there are fast paths for if both operands are integers, or if both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_div can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 / 3
     
    @@ -188,17 +220,17 @@ 

    Usage

    opt_empty_p

    -

    Summary

    +

    Summary

    opt_empty_p is an optimisation applied when the method empty? is called on a String, Array or a Hash. This optimisation can be applied because Ruby knows how to calculate the length of these objects using internal C macros.

    -

    TracePoint

    +

    TracePoint

    opt_empty_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".empty?
     
    @@ -210,17 +242,17 @@ 

    Usage

    opt_getinlinecache

    -

    Summary

    +

    Summary

    opt_getinlinecache is a wrapper around a series of getconstant instructions that allows skipping past them if the inline cache is currently set.

    -

    TracePoint

    +

    TracePoint

    opt_getinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -234,17 +266,17 @@ 

    Usage

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -257,17 +289,17 @@ 

    Usage

    opt_or

    -

    Summary

    +

    Summary

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -281,17 +313,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -304,16 +336,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -326,17 +358,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -350,16 +382,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -370,15 +402,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -397,15 +429,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -416,15 +448,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -437,15 +469,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -456,15 +488,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    
    From 8ad050908ccaea39d38f17ca03b4b6e2c7ee8534 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 9 May 2022 18:51:14 +0000
    Subject: [PATCH 17/63] deploy: 4b0fb8065fbbe9c4d8d946a64c14332093a6e258
    
    ---
     index.html | 147 +++++++++++++++++++++++++++++++----------------------
     1 file changed, 87 insertions(+), 60 deletions(-)
    
    diff --git a/index.html b/index.html
    index 81a036e..3a2a7e0 100644
    --- a/index.html
    +++ b/index.html
    @@ -12,6 +12,7 @@ 

    YARV Instructions

    -

    dup

    +

    definemethod

    Summary

    -

    dup copies the top value of the stack and pushes it onto the stack.

    +

    definemethod defines a method on the class of the current value of self. +It accepts two arguments. The first is the name of the method being defined. +The second is the instruction sequence representing the body of the method.

    TracePoint

    -

    dup does not dispatch any events.

    +

    definemethod does not dispatch any events.

    Usage

    +
    def value = "value"
    +
    +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,19)> (catch: FALSE)
    +# 0000 definemethod                           :value, value             (   1)[Li]
    +# 0003 putobject                              :value
    +# 0005 leave
    +#
    +# == disasm: #<ISeq:value@-e:1 (1,0)-(1,19)> (catch: FALSE)
    +# 0000 putstring                              "value"                   (   1)[Ca]
    +# 0002 leave                                  [Re]
    +
    + +

    dup

    + +

    Summary

    + +

    dup copies the top value of the stack and pushes it onto the stack.

    + +

    TracePoint

    + +

    dup does not dispatch any events.

    + +

    Usage

    +
    $global = 5
     
     # == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,11)> (catch: FALSE)
    @@ -88,16 +115,16 @@ 

    Usage

    getconstant

    -

    Summary

    +

    Summary

    getconstant performs a constant lookup and pushes the value of the constant onto the stack.

    -

    TracePoint

    +

    TracePoint

    getconstant does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -111,15 +138,15 @@ 

    Usage

    getglobal

    -

    Summary

    +

    Summary

    getglobal pushes the value of a global variables onto the stack.

    -

    TracePoint

    +

    TracePoint

    getglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $$
     
    @@ -130,15 +157,15 @@ 

    Usage

    leave

    -

    Summary

    +

    Summary

    leave exits the current frame.

    -

    TracePoint

    +

    TracePoint

    leave does not dispatch any events.

    -

    Usage

    +

    Usage

    ;;
     
    @@ -149,17 +176,17 @@ 

    Usage

    opt_and

    -

    Summary

    +

    Summary

    opt_and is a specialization of the opt_send_without_block instruction that occurs when the & operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_and can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 & 3
     
    @@ -173,17 +200,17 @@ 

    Usage

    opt_aref

    -

    Summary

    +

    Summary

    opt_aref is a specialization of the opt_send_without_block instruction that occurs when the [] operator is used. In CRuby, there are fast paths if the receiver is an integer, array, or hash.

    -

    TracePoint

    +

    TracePoint

    opt_aref can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    7[2]
     
    @@ -197,17 +224,17 @@ 

    Usage

    opt_div

    -

    Summary

    +

    Summary

    opt_div is a specialization of the opt_send_without_block instruction that occurs when the / operator is used. In CRuby, there are fast paths for if both operands are integers, or if both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_div can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 / 3
     
    @@ -220,17 +247,17 @@ 

    Usage

    opt_empty_p

    -

    Summary

    +

    Summary

    opt_empty_p is an optimisation applied when the method empty? is called on a String, Array or a Hash. This optimisation can be applied because Ruby knows how to calculate the length of these objects using internal C macros.

    -

    TracePoint

    +

    TracePoint

    opt_empty_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".empty?
     
    @@ -242,17 +269,17 @@ 

    Usage

    opt_getinlinecache

    -

    Summary

    +

    Summary

    opt_getinlinecache is a wrapper around a series of getconstant instructions that allows skipping past them if the inline cache is currently set.

    -

    TracePoint

    +

    TracePoint

    opt_getinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -266,17 +293,17 @@ 

    Usage

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -289,17 +316,17 @@ 

    Usage

    opt_or

    -

    Summary

    +

    Summary

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -313,17 +340,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -336,16 +363,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -358,17 +385,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -382,16 +409,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -402,15 +429,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -429,15 +456,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -448,15 +475,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -469,15 +496,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -488,15 +515,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    
    From 582b69a7fc71e0655b693e0d3a1954fbda8afcaa Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 9 May 2022 19:12:25 +0000
    Subject: [PATCH 18/63] deploy: e2cb8f18527c5bb28bed5c2a13fa11d7cf185b68
    
    ---
     index.html | 83 ++++++++++++++++++++++++++++++++++--------------------
     1 file changed, 53 insertions(+), 30 deletions(-)
    
    diff --git a/index.html b/index.html
    index 3a2a7e0..5e4f7be 100644
    --- a/index.html
    +++ b/index.html
    @@ -23,6 +23,7 @@ 

    YARV Instructions

  • opt_empty_p
  • opt_getinlinecache
  • opt_minus
  • +
  • opt_nil_p
  • opt_or
  • opt_plus
  • opt_send_without_block
  • @@ -314,19 +315,41 @@

    Usage

    # 0006 leave
    -

    opt_or

    +

    opt_nil_p

    Summary

    +

    opt_nil_p is an optimisation applied when the method nil? is called. It +returns true immediately when the receiver is nil and defers to the nil? +method in other cases

    + +

    TracePoint

    + +

    opt_nil_p can dispatch c_call and c_return events.

    + +

    Usage

    + +
    "".nil?
    +
    +#== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,9)> (catch: FALSE)
    +#0000 putstring                              ""                        (   1)[Li]                                  
    +#0002 opt_nil_p                              <calldata!mid:nil?, argc:0, ARGS_SIMPLE>[CcCr]                      
    +#0004 leave   
    +
    + +

    opt_or

    + +

    Summary

    +

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -340,17 +363,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -363,16 +386,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -385,17 +408,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -409,16 +432,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -429,15 +452,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -456,15 +479,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -475,15 +498,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -496,15 +519,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -515,15 +538,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    
    From 9d0c61e9e0447a3afb19ebddc243c369146035ac Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 9 May 2022 20:38:39 +0000
    Subject: [PATCH 19/63] deploy: 22dd34fe1e6cc335f94e888f8427b65293d2ad3c
    
    ---
     index.html | 40 +++++++++++++++++++++++++++++++---------
     1 file changed, 31 insertions(+), 9 deletions(-)
    
    diff --git a/index.html b/index.html
    index 5e4f7be..97a02a8 100644
    --- a/index.html
    +++ b/index.html
    @@ -31,6 +31,7 @@ 

    YARV Instructions

  • opt_str_uminus
  • pop
  • putobject
  • +
  • putobject_int2fix_0
  • putself
  • putstring
  • setglobal
  • @@ -496,18 +497,39 @@

    Usage

    # 0002 leave
    -

    putself

    +

    putobject_int2fix_0

    Summary

    -

    putself pushes the current value of self onto the stack.

    +

    putobject_INT2FIX_0_ pushes 0 on the stack. +It is a specialized instruction resulting from the operand +unification optimization. It is the equivalent to putobject 0.

    TracePoint

    -

    putself can dispatch the line event.

    +

    putobject can dispatch the line event.

    Usage

    +
    0
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,1)> (catch: FALSE)
    +# 0000 putobject_INT2FIX_0_                                             (   1)[Li]
    +# 0001 leave
    +
    + +

    putself

    + +

    Summary

    + +

    putself pushes the current value of self onto the stack.

    + +

    TracePoint

    + +

    putself can dispatch the line event.

    + +

    Usage

    +
    puts "Hello, world!"
     
     # == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,20)> (catch: FALSE)
    @@ -519,15 +541,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -538,15 +560,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    
    From b859b51d51616b21e24e32611053c8015856a35e Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 9 May 2022 21:00:52 +0000
    Subject: [PATCH 20/63] deploy: e00dccbd8f4567222066f8a55cbe16105db43280
    
    ---
     index.html | 101 ++++++++++++++++++++++++++++++++---------------------
     1 file changed, 62 insertions(+), 39 deletions(-)
    
    diff --git a/index.html b/index.html
    index 97a02a8..05af672 100644
    --- a/index.html
    +++ b/index.html
    @@ -22,6 +22,7 @@ 

    YARV Instructions

  • opt_div
  • opt_empty_p
  • opt_getinlinecache
  • +
  • opt_length
  • opt_minus
  • opt_nil_p
  • opt_or
  • @@ -293,19 +294,41 @@

    Usage

    # 0009 leave
    -

    opt_minus

    +

    opt_length

    Summary

    +

    opt_length is a specialization of opt_send_without_block, when the +length method is called on a Ruby type with a known size. In CRuby there +are fast paths when the receiver is either a String, Hash or Array.

    + +

    TracePoint

    + +

    opt_length can dispatch c_call and c_return events.

    + +

    Usage

    + +
    "".length
    +
    +#== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,9)> (catch: FALSE)
    +#0000 putstring                              ""                        (   1)[Li]
    +#0002 opt_length                             <calldata!mid:length, argc:0, ARGS_SIMPLE>[CcCr]
    +#0004 leave
    +
    + +

    opt_minus

    + +

    Summary

    +

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -318,17 +341,17 @@ 

    Usage

    opt_nil_p

    -

    Summary

    +

    Summary

    opt_nil_p is an optimisation applied when the method nil? is called. It returns true immediately when the receiver is nil and defers to the nil? method in other cases

    -

    TracePoint

    +

    TracePoint

    opt_nil_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".nil?
     
    @@ -340,17 +363,17 @@ 

    Usage

    opt_or

    -

    Summary

    +

    Summary

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -364,17 +387,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -387,16 +410,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -409,17 +432,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -433,16 +456,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -453,15 +476,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -480,15 +503,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -499,17 +522,17 @@ 

    Usage

    putobject_int2fix_0

    -

    Summary

    +

    Summary

    putobject_INT2FIX_0_ pushes 0 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 0.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    0
     
    @@ -520,15 +543,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -541,15 +564,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -560,15 +583,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    
    From 568b7f5e1a1521080ea4929a8a30cb05f0e68999 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 9 May 2022 21:01:11 +0000
    Subject: [PATCH 21/63] deploy: 13b2b24f504f0142e6e62d2b5f0324dd35fc641b
    
    ---
     index.html | 59 +++++++++++++++++++++++++++++++++++++-----------------
     1 file changed, 41 insertions(+), 18 deletions(-)
    
    diff --git a/index.html b/index.html
    index 05af672..3e515bf 100644
    --- a/index.html
    +++ b/index.html
    @@ -30,6 +30,7 @@ 

    YARV Instructions

  • opt_send_without_block
  • opt_setinlinecache
  • opt_str_uminus
  • +
  • opt_succ
  • pop
  • putobject
  • putobject_int2fix_0
  • @@ -474,18 +475,40 @@

    Usage

    # 0003 leave
    -

    pop

    +

    opt_succ

    Summary

    -

    pop pops the top value off the stack.

    +

    opt_succ is a specialization of the opt_send_without_block instruction +when the method being called is succ. Fast paths exist within CRuby when +the receiver is either a String or a Fixnum.

    TracePoint

    -

    pop does not dispatch any events.

    +

    opt_succ can dispatch c_call and c_return events.

    Usage

    +
    "".succ
    +
    +#== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,8)> (catch: FALSE)
    +#0000 putstring                              "a"                       (   1)[Li]
    +#0002 opt_succ                               <calldata!mid:succ, argc:0, ARGS_SIMPLE>[CcCr]
    +#0004 leave  
    +
    + +

    pop

    + +

    Summary

    + +

    pop pops the top value off the stack.

    + +

    TracePoint

    + +

    pop does not dispatch any events.

    + +

    Usage

    +
    a ||= 2
     
     # == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,7)> (catch: FALSE)
    @@ -503,15 +526,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -522,17 +545,17 @@ 

    Usage

    putobject_int2fix_0

    -

    Summary

    +

    Summary

    putobject_INT2FIX_0_ pushes 0 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 0.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    0
     
    @@ -543,15 +566,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -564,15 +587,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -583,15 +606,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    
    From f6fb8ab10ec957856a9aa41fee485433cb076490 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 9 May 2022 21:07:10 +0000
    Subject: [PATCH 22/63] deploy: 3a9e3f02bfa56eaa81136395426500266629333a
    
    ---
     index.html | 24 ++++++++++++------------
     1 file changed, 12 insertions(+), 12 deletions(-)
    
    diff --git a/index.html b/index.html
    index 3e515bf..ce94c32 100644
    --- a/index.html
    +++ b/index.html
    @@ -155,8 +155,8 @@ 

    Usage

    $$
     
     # == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,2)> (catch: FALSE)
    -# 0000 getglobal                              :$$                       (   1)[Li]    
    -# 0002 leave  
    +# 0000 getglobal                              :$$                       (   1)[Li]
    +# 0002 leave
     

    leave

    @@ -266,9 +266,9 @@

    Usage

    "".empty?
     
     #== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,9)> (catch: FALSE)
    -#0000 putstring                              ""                        (   1)[Li]                                  
    -#0002 opt_empty_p                            <calldata!mid:empty?, argc:0, ARGS_SIMPLE>[CcCr]                      
    -#0004 leave   
    +#0000 putstring                              ""                        (   1)[Li]
    +#0002 opt_empty_p                            <calldata!mid:empty?, argc:0, ARGS_SIMPLE>[CcCr]
    +#0004 leave
     

    opt_getinlinecache

    @@ -344,7 +344,7 @@

    opt_nil_p

    Summary

    -

    opt_nil_p is an optimisation applied when the method nil? is called. It +

    opt_nil_p is an optimisation applied when the method nil? is called. It returns true immediately when the receiver is nil and defers to the nil? method in other cases

    @@ -357,9 +357,9 @@

    Usage

    "".nil?
     
     #== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,9)> (catch: FALSE)
    -#0000 putstring                              ""                        (   1)[Li]                                  
    -#0002 opt_nil_p                              <calldata!mid:nil?, argc:0, ARGS_SIMPLE>[CcCr]                      
    -#0004 leave   
    +#0000 putstring                              ""                        (   1)[Li]
    +#0002 opt_nil_p                              <calldata!mid:nil?, argc:0, ARGS_SIMPLE>[CcCr]
    +#0004 leave
     

    opt_or

    @@ -494,7 +494,7 @@

    Usage

    #== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,8)> (catch: FALSE) #0000 putstring "a" ( 1)[Li] #0002 opt_succ <calldata!mid:succ, argc:0, ARGS_SIMPLE>[CcCr] -#0004 leave +#0004 leave

    pop

    @@ -600,8 +600,8 @@

    Usage

    "foo"
     
     = disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)
    -000 putstring                              "foo"                     (   1)[Li]                                  
    -002 leave 
    +000 putstring                              "foo"                     (   1)[Li]
    +002 leave
     

    setglobal

    From 4b7ad0f69548a537f19f97e93a42a698a9187f73 Mon Sep 17 00:00:00 2001 From: kddnewton Date: Mon, 9 May 2022 21:38:55 +0000 Subject: [PATCH 23/63] deploy: 19e45a38e7a8bae72e62d12a09f51c3bf0d706b9 --- index.html | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index ce94c32..eec526c 100644 --- a/index.html +++ b/index.html @@ -16,6 +16,7 @@

    YARV Instructions

  • dup
  • getconstant
  • getglobal
  • +
  • getlocal_wc_0
  • leave
  • opt_and
  • opt_aref
  • @@ -37,6 +38,7 @@

    YARV Instructions

  • putself
  • putstring
  • setglobal
  • +
  • setlocal_wc_0
  • branchunless

    @@ -159,19 +161,44 @@

    Usage

    # 0002 leave
    -

    leave

    +

    getlocal_wc_0

    Summary

    -

    leave exits the current frame.

    +

    getlocal_WC_0 is a specialized version of the getlocal instruction. It +fetches the value of a local variable from the current frame determined by +the index given as its only argument.

    TracePoint

    -

    leave does not dispatch any events.

    +

    getlocal_WC_0 does not dispatch any events.

    Usage

    -
    ;;
    +
    value = 5; value
    +
    +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,16)> (catch: FALSE)
    +# local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
    +# [ 1] value@0
    +# 0000 putobject                              5                         (   1)[Li]
    +# 0002 setlocal_WC_0                          value@0
    +# 0004 getlocal_WC_0                          value@0
    +# 0006 leave
    +
    +## leave
    +
    +### Summary
    +
    +`leave` exits the current frame.
    +
    +### TracePoint
    +
    +`leave` does not dispatch any events.
    +
    +### Usage
    +
    +~~~ruby
    +;;
     
     # == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,2)> (catch: FALSE)
     # 0000 putnil
    @@ -625,6 +652,31 @@ 

    Usage

    # 0005 leave
    +

    setlocal_wc_0

    + +

    Summary

    + +

    setlocal_WC_0 is a specialized version of the setlocal instruction. It +sets the value of a local variable on the current frame to the value at the +top of the stack as determined by the index given as its only argument.

    + +

    TracePoint

    + +

    setlocal_WC_0 does not dispatch any events.

    + +

    Usage

    + +

    ~~~ruby +value = 5

    + +

    == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,9)> (catch: FALSE)

    +

    # local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1]) +# [ 1] value@0 +# 0000 putobject 5 ( 1)[Li] +# 0002 dup +# 0003 setlocal_WC_0 value@0 +# 0005 leave

    + From 378ad7581db78bc76357e604cd259ea3b057ac1f Mon Sep 17 00:00:00 2001 From: kddnewton Date: Tue, 10 May 2022 00:12:40 +0000 Subject: [PATCH 24/63] deploy: f5691b8fc1b583a4e6c299a044e9c5679225f540 --- index.html | 81 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 50 insertions(+), 31 deletions(-) diff --git a/index.html b/index.html index eec526c..84d4387 100644 --- a/index.html +++ b/index.html @@ -35,6 +35,7 @@

    YARV Instructions

  • pop
  • putobject
  • putobject_int2fix_0
  • +
  • putobject_int2fix_1
  • putself
  • putstring
  • setglobal
  • @@ -53,7 +54,7 @@

    Summary

    TracePoint

    -

    There is no trace point for branchunless.

    +

    branchunless does not dispatch any events.

    Usage

    @@ -226,7 +227,6 @@

    Usage

    # 0002 putobject 3 │~ # 0004 opt_and <calldata!mid:&, argc:1, ARGS_SIMPLE>[CcCr] │~ # 0006 leave -

    opt_aref

    @@ -250,7 +250,6 @@

    Usage

    # 0002 putobject 2 │~ # 0004 opt_aref <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr] │~ # 0006 leave -

    opt_div

    @@ -280,8 +279,8 @@

    opt_empty_p

    Summary

    -

    opt_empty_p is an optimisation applied when the method empty? is called -on a String, Array or a Hash. This optimisation can be applied because Ruby +

    opt_empty_p is an optimization applied when the method empty? is called +on a String, Array or a Hash. This optimization can be applied because Ruby knows how to calculate the length of these objects using internal C macros.

    TracePoint

    @@ -371,7 +370,7 @@

    opt_nil_p

    Summary

    -

    opt_nil_p is an optimisation applied when the method nil? is called. It +

    opt_nil_p is an optimization applied when the method nil? is called. It returns true immediately when the receiver is nil and defers to the nil? method in other cases

    @@ -405,12 +404,11 @@

    Usage

    2 | 3
     
    -# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)                                      │~
    -# 0000 putobject                              2                         (   1)[Li]                           │~
    -# 0002 putobject                              3                                                              │~
    -# 0004 opt_or                                 <calldata!mid:|, argc:1, ARGS_SIMPLE>[CcCr]                    │~
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)
    +# 0000 putobject                              2                         (   1)[Li]
    +# 0002 putobject                              3
    +# 0004 opt_or                                 <calldata!mid:|, argc:1, ARGS_SIMPLE>[CcCr]
     # 0006 leave
    -
     

    opt_plus

    @@ -591,18 +589,39 @@

    Usage

    # 0001 leave
    -

    putself

    +

    putobject_int2fix_1

    Summary

    -

    putself pushes the current value of self onto the stack.

    +

    putobject_INT2FIX_1_ pushes 1 on the stack. +It is a specialized instruction resulting from the operand +unification optimization. It is the equivalent to putobject 1.

    TracePoint

    -

    putself can dispatch the line event.

    +

    putobject can dispatch the line event.

    Usage

    +
    1
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,1)> (catch: FALSE)
    +# 0000 putobject_INT2FIX_1_                                             (   1)[Li]
    +# 0001 leave
    +
    + +

    putself

    + +

    Summary

    + +

    putself pushes the current value of self onto the stack.

    + +

    TracePoint

    + +

    putself can dispatch the line event.

    + +

    Usage

    +
    puts "Hello, world!"
     
     # == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,20)> (catch: FALSE)
    @@ -614,34 +633,34 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    -= disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)
    -000 putstring                              "foo"                     (   1)[Li]
    -002 leave
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)
    +# 0000 putstring                              "foo"                     (   1)[Li]
    +# 0002 leave
     

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    @@ -654,28 +673,28 @@ 

    Usage

    setlocal_wc_0

    -

    Summary

    +

    Summary

    setlocal_WC_0 is a specialized version of the setlocal instruction. It sets the value of a local variable on the current frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    -

    ~~~ruby -value = 5

    +
    value = 5
     
    -

    == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,9)> (catch: FALSE)

    -

    # local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1]) +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,9)> (catch: FALSE) +# local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1]) # [ 1] value@0 # 0000 putobject 5 ( 1)[Li] # 0002 dup # 0003 setlocal_WC_0 value@0 -# 0005 leave

    +# 0005 leave +
    From 7806ba61210172e6227a65ddfca36f8907545008 Mon Sep 17 00:00:00 2001 From: kddnewton Date: Tue, 10 May 2022 01:26:05 +0000 Subject: [PATCH 25/63] deploy: cea4e2146b94999bc0e7d14726f206ac7de995bb --- index.html | 294 ++++++++++++++++++++++++++++++++--------------------- style.css | 36 +++++++ 2 files changed, 216 insertions(+), 114 deletions(-) create mode 100644 style.css diff --git a/index.html b/index.html index 84d4387..f876768 100644 --- a/index.html +++ b/index.html @@ -4,43 +4,51 @@ YARV + -

    YARV Instructions

    +
    + +
    +

    YARV Instructions

    Below is a list of the YARV instructions that this project has documented so far.

    - +

    branchunless

    @@ -73,6 +81,8 @@

    Usage

    0015 leave
    +
    +

    definemethod

    Summary

    @@ -99,6 +109,8 @@

    Usage

    # 0002 leave [Re]
    +
    +

    dup

    Summary

    @@ -120,6 +132,8 @@

    Usage

    # 0005 leave
    +
    +

    getconstant

    Summary

    @@ -143,6 +157,8 @@

    Usage

    # 0009 leave
    +
    +

    getglobal

    Summary

    @@ -162,6 +178,8 @@

    Usage

    # 0002 leave
    +
    +

    getlocal_wc_0

    Summary

    @@ -185,86 +203,94 @@

    Usage

    # 0002 setlocal_WC_0 value@0 # 0004 getlocal_WC_0 value@0 # 0006 leave +
    -## leave +
    -### Summary +

    leave

    -`leave` exits the current frame. +

    Summary

    -### TracePoint +

    leave exits the current frame.

    -`leave` does not dispatch any events. +

    TracePoint

    -### Usage +

    leave does not dispatch any events.

    -~~~ruby -;; +

    Usage

    + +
    ;;
     
     # == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,2)> (catch: FALSE)
     # 0000 putnil
     # 0001 leave
     
    +
    +

    opt_and

    -

    Summary

    +

    Summary

    opt_and is a specialization of the opt_send_without_block instruction that occurs when the & operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_and can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 & 3
     
    -# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)                                      │~
    -# 0000 putobject                              2                         (   1)[Li]                           │~
    -# 0002 putobject                              3                                                              │~
    -# 0004 opt_and                                <calldata!mid:&, argc:1, ARGS_SIMPLE>[CcCr]                    │~
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)
    +# 0000 putobject                              2                         (   1)[Li]
    +# 0002 putobject                              3
    +# 0004 opt_and                                <calldata!mid:&, argc:1, ARGS_SIMPLE>[CcCr]
     # 0006 leave
     
    +
    +

    opt_aref

    -

    Summary

    +

    Summary

    opt_aref is a specialization of the opt_send_without_block instruction that occurs when the [] operator is used. In CRuby, there are fast paths if the receiver is an integer, array, or hash.

    -

    TracePoint

    +

    TracePoint

    opt_aref can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    7[2]
     
    -# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)                                      │~
    -# 0000 putobject                              7                         (   1)[Li]                           │~
    -# 0002 putobject                              2                                                              │~
    -# 0004 opt_aref                               <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]                    │~
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)
    +# 0000 putobject                              7                         (   1)[Li]
    +# 0002 putobject                              2
    +# 0004 opt_aref                               <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
     # 0006 leave
     
    +
    +

    opt_div

    -

    Summary

    +

    Summary

    opt_div is a specialization of the opt_send_without_block instruction that occurs when the / operator is used. In CRuby, there are fast paths for if both operands are integers, or if both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_div can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 / 3
     
    @@ -275,19 +301,21 @@ 

    Usage

    # 0006 leave
    +
    +

    opt_empty_p

    -

    Summary

    +

    Summary

    opt_empty_p is an optimization applied when the method empty? is called on a String, Array or a Hash. This optimization can be applied because Ruby knows how to calculate the length of these objects using internal C macros.

    -

    TracePoint

    +

    TracePoint

    opt_empty_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".empty?
     
    @@ -297,19 +325,21 @@ 

    Usage

    #0004 leave
    +
    +

    opt_getinlinecache

    -

    Summary

    +

    Summary

    opt_getinlinecache is a wrapper around a series of getconstant instructions that allows skipping past them if the inline cache is currently set.

    -

    TracePoint

    +

    TracePoint

    opt_getinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -321,19 +351,21 @@ 

    Usage

    # 0009 leave
    +
    +

    opt_length

    -

    Summary

    +

    Summary

    opt_length is a specialization of opt_send_without_block, when the length method is called on a Ruby type with a known size. In CRuby there are fast paths when the receiver is either a String, Hash or Array.

    -

    TracePoint

    +

    TracePoint

    opt_length can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".length
     
    @@ -343,19 +375,21 @@ 

    Usage

    #0004 leave
    +
    +

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -366,19 +400,21 @@ 

    Usage

    # 0006 leave
    +
    +

    opt_nil_p

    -

    Summary

    +

    Summary

    opt_nil_p is an optimization applied when the method nil? is called. It returns true immediately when the receiver is nil and defers to the nil? method in other cases

    -

    TracePoint

    +

    TracePoint

    opt_nil_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".nil?
     
    @@ -388,19 +424,21 @@ 

    Usage

    #0004 leave
    +
    +

    opt_or

    -

    Summary

    +

    Summary

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -411,19 +449,21 @@ 

    Usage

    # 0006 leave
    +
    +

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -434,18 +474,20 @@ 

    Usage

    # 0006 leave
    +
    +

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -456,19 +498,21 @@ 

    Usage

    # 0005 leave
    +
    +

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -480,18 +524,20 @@ 

    Usage

    # 0009 leave
    +
    +

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -500,19 +546,21 @@ 

    Usage

    # 0003 leave
    +
    +

    opt_succ

    -

    Summary

    +

    Summary

    opt_succ is a specialization of the opt_send_without_block instruction when the method being called is succ. Fast paths exist within CRuby when the receiver is either a String or a Fixnum.

    -

    TracePoint

    +

    TracePoint

    opt_succ can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".succ
     
    @@ -522,17 +570,19 @@ 

    Usage

    #0004 leave
    +
    +

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -549,17 +599,19 @@ 

    Usage

    # 0011 leave
    +
    +

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -568,19 +620,21 @@ 

    Usage

    # 0002 leave
    +
    +

    putobject_int2fix_0

    -

    Summary

    +

    Summary

    putobject_INT2FIX_0_ pushes 0 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 0.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    0
     
    @@ -589,19 +643,21 @@ 

    Usage

    # 0001 leave
    +
    +

    putobject_int2fix_1

    -

    Summary

    +

    Summary

    putobject_INT2FIX_1_ pushes 1 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 1.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    1
     
    @@ -610,17 +666,19 @@ 

    Usage

    # 0001 leave
    +
    +

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -631,17 +689,19 @@ 

    Usage

    # 0005 leave
    +
    +

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -650,17 +710,19 @@ 

    Usage

    # 0002 leave
    +
    +

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    @@ -671,19 +733,21 @@ 

    Usage

    # 0005 leave
    +
    +

    setlocal_wc_0

    -

    Summary

    +

    Summary

    setlocal_WC_0 is a specialized version of the setlocal instruction. It sets the value of a local variable on the current frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     
    @@ -697,5 +761,7 @@ 

    Usage

    + + diff --git a/style.css b/style.css new file mode 100644 index 0000000..ca6e809 --- /dev/null +++ b/style.css @@ -0,0 +1,36 @@ +html, body { + margin: 0; +} + +main { + display: flex; +} + +aside { + background-color: #f6f6f6; +} + +nav { + display: flex; + flex-direction: column; + max-height: 100vh; + overflow-y: auto; + padding: 0.5em; + position: sticky; + top: 0; +} + +nav a { + border-radius: 5px; + color: #0000ee; + padding: 0.3em 1em; + text-decoration: none; +} + +nav a:hover { + background: #eee; +} + +article { + padding: 0 1em; +} From 3e8bd76b8988fddf7fbcb726cc17550cd7b015cf Mon Sep 17 00:00:00 2001 From: kddnewton Date: Tue, 10 May 2022 13:14:21 +0000 Subject: [PATCH 26/63] deploy: ba6be5a26c2537419ddf145a33d89472c619927f --- index.html | 64 ++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 43 insertions(+), 21 deletions(-) diff --git a/index.html b/index.html index f876768..8498830 100644 --- a/index.html +++ b/index.html @@ -32,6 +32,7 @@ opt_str_uminus opt_succ pop +putnil putobject putobject_int2fix_0 putobject_int2fix_1 @@ -601,18 +602,39 @@

    Usage


    -

    putobject

    +

    putnil

    Summary

    -

    putobject pushes a known value onto the stack.

    +

    putnil pushes a global nil object onto the stack.

    TracePoint

    -

    putobject can dispatch the line event.

    +

    putnil can dispatch the line event.

    Usage

    +
    nil
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,3)> (catch: FALSE)
    +# 0000 putnil                                                           (   1)[Li]
    +# 0001 leave
    +
    + +
    + +

    putobject

    + +

    Summary

    + +

    putobject pushes a known value onto the stack.

    + +

    TracePoint

    + +

    putobject can dispatch the line event.

    + +

    Usage

    +
    5
     
     # == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,1)> (catch: FALSE)
    @@ -624,17 +646,17 @@ 

    Usage

    putobject_int2fix_0

    -

    Summary

    +

    Summary

    putobject_INT2FIX_0_ pushes 0 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 0.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    0
     
    @@ -647,17 +669,17 @@ 

    Usage

    putobject_int2fix_1

    -

    Summary

    +

    Summary

    putobject_INT2FIX_1_ pushes 1 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 1.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    1
     
    @@ -670,15 +692,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -693,15 +715,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -714,15 +736,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    @@ -737,17 +759,17 @@ 

    Usage

    setlocal_wc_0

    -

    Summary

    +

    Summary

    setlocal_WC_0 is a specialized version of the setlocal instruction. It sets the value of a local variable on the current frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     
    
    From 16e625f5c0a8e9dea47e6edd7ca3a61caf4debea Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Tue, 10 May 2022 13:14:50 +0000
    Subject: [PATCH 27/63] deploy: 3e372f6824986a460fac6773ee8cad9d80252911
    
    ---
     index.html | 140 +++++++++++++++++++++++++++++++----------------------
     1 file changed, 83 insertions(+), 57 deletions(-)
    
    diff --git a/index.html b/index.html
    index 8498830..638731a 100644
    --- a/index.html
    +++ b/index.html
    @@ -21,6 +21,7 @@
     opt_aref
     opt_div
     opt_empty_p
    +opt_eq
     opt_getinlinecache
     opt_length
     opt_minus
    @@ -328,19 +329,44 @@ 

    Usage


    -

    opt_getinlinecache

    +

    opt_eq

    Summary

    +

    opt_eq is a specialization of the opt_send_without_block instruction +that occurs when the == operator is used. Fast paths exist within CRuby when +both operands are integers, floats, symbols or strings.

    + +

    TracePoint

    + +

    opt_eq can dispatch both the c_call and c_return events.

    + +

    Usage

    + +
    2 == 2
    +
    +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,6)> (catch: FALSE)
    +# 0000 putobject                              2                         (   1)[Li]
    +# 0002 putobject                              2
    +# 0004 opt_eq                                 <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
    +# 0006 leave
    +
    + +
    + +

    opt_getinlinecache

    + +

    Summary

    +

    opt_getinlinecache is a wrapper around a series of getconstant instructions that allows skipping past them if the inline cache is currently set.

    -

    TracePoint

    +

    TracePoint

    opt_getinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -356,17 +382,17 @@ 

    Usage

    opt_length

    -

    Summary

    +

    Summary

    opt_length is a specialization of opt_send_without_block, when the length method is called on a Ruby type with a known size. In CRuby there are fast paths when the receiver is either a String, Hash or Array.

    -

    TracePoint

    +

    TracePoint

    opt_length can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".length
     
    @@ -380,17 +406,17 @@ 

    Usage

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -405,17 +431,17 @@ 

    Usage

    opt_nil_p

    -

    Summary

    +

    Summary

    opt_nil_p is an optimization applied when the method nil? is called. It returns true immediately when the receiver is nil and defers to the nil? method in other cases

    -

    TracePoint

    +

    TracePoint

    opt_nil_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".nil?
     
    @@ -429,17 +455,17 @@ 

    Usage

    opt_or

    -

    Summary

    +

    Summary

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -454,17 +480,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -479,16 +505,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -503,17 +529,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -529,16 +555,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -551,17 +577,17 @@ 

    Usage

    opt_succ

    -

    Summary

    +

    Summary

    opt_succ is a specialization of the opt_send_without_block instruction when the method being called is succ. Fast paths exist within CRuby when the receiver is either a String or a Fixnum.

    -

    TracePoint

    +

    TracePoint

    opt_succ can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".succ
     
    @@ -575,15 +601,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -604,15 +630,15 @@ 

    Usage

    putnil

    -

    Summary

    +

    Summary

    putnil pushes a global nil object onto the stack.

    -

    TracePoint

    +

    TracePoint

    putnil can dispatch the line event.

    -

    Usage

    +

    Usage

    nil
     
    @@ -625,15 +651,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -646,17 +672,17 @@ 

    Usage

    putobject_int2fix_0

    -

    Summary

    +

    Summary

    putobject_INT2FIX_0_ pushes 0 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 0.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    0
     
    @@ -669,17 +695,17 @@ 

    Usage

    putobject_int2fix_1

    -

    Summary

    +

    Summary

    putobject_INT2FIX_1_ pushes 1 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 1.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    1
     
    @@ -692,15 +718,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -715,15 +741,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -736,15 +762,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    @@ -759,17 +785,17 @@ 

    Usage

    setlocal_wc_0

    -

    Summary

    +

    Summary

    setlocal_WC_0 is a specialized version of the setlocal instruction. It sets the value of a local variable on the current frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     
    
    From 99a7f78811177783f2394da2cabc777d7d0bb6a3 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Tue, 10 May 2022 13:15:24 +0000
    Subject: [PATCH 28/63] deploy: ce0a73c91eed81349b8dc3a0d25d019a5885ee6b
    
    ---
     index.html | 166 ++++++++++++++++++++++++++++++-----------------------
     1 file changed, 94 insertions(+), 72 deletions(-)
    
    diff --git a/index.html b/index.html
    index 638731a..0f26d55 100644
    --- a/index.html
    +++ b/index.html
    @@ -17,6 +17,7 @@
     getglobal
     getlocal_wc_0
     leave
    +newarray
     opt_and
     opt_aref
     opt_div
    @@ -230,19 +231,40 @@ 

    Usage


    -

    opt_and

    +

    newarray

    Summary

    +

    newarray puts a new array initialized with size values from the stack.

    + +

    TracePoint

    + +

    newarray dispatches a line event.

    + +

    Usage

    + +
    ["string"]
    +
    +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,10)> (catch: FALSE)
    +# 0000 putstring                              "string"                  (   1)[Li]
    +# 0002 newarray                               1
    +# 0004 leave
    +
    +
    + +

    opt_and

    + +

    Summary

    +

    opt_and is a specialization of the opt_send_without_block instruction that occurs when the & operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_and can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 & 3
     
    @@ -257,17 +279,17 @@ 

    Usage

    opt_aref

    -

    Summary

    +

    Summary

    opt_aref is a specialization of the opt_send_without_block instruction that occurs when the [] operator is used. In CRuby, there are fast paths if the receiver is an integer, array, or hash.

    -

    TracePoint

    +

    TracePoint

    opt_aref can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    7[2]
     
    @@ -282,17 +304,17 @@ 

    Usage

    opt_div

    -

    Summary

    +

    Summary

    opt_div is a specialization of the opt_send_without_block instruction that occurs when the / operator is used. In CRuby, there are fast paths for if both operands are integers, or if both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_div can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 / 3
     
    @@ -307,17 +329,17 @@ 

    Usage

    opt_empty_p

    -

    Summary

    +

    Summary

    opt_empty_p is an optimization applied when the method empty? is called on a String, Array or a Hash. This optimization can be applied because Ruby knows how to calculate the length of these objects using internal C macros.

    -

    TracePoint

    +

    TracePoint

    opt_empty_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".empty?
     
    @@ -331,17 +353,17 @@ 

    Usage

    opt_eq

    -

    Summary

    +

    Summary

    opt_eq is a specialization of the opt_send_without_block instruction that occurs when the == operator is used. Fast paths exist within CRuby when both operands are integers, floats, symbols or strings.

    -

    TracePoint

    +

    TracePoint

    opt_eq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 == 2
     
    @@ -356,17 +378,17 @@ 

    Usage

    opt_getinlinecache

    -

    Summary

    +

    Summary

    opt_getinlinecache is a wrapper around a series of getconstant instructions that allows skipping past them if the inline cache is currently set.

    -

    TracePoint

    +

    TracePoint

    opt_getinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -382,17 +404,17 @@ 

    Usage

    opt_length

    -

    Summary

    +

    Summary

    opt_length is a specialization of opt_send_without_block, when the length method is called on a Ruby type with a known size. In CRuby there are fast paths when the receiver is either a String, Hash or Array.

    -

    TracePoint

    +

    TracePoint

    opt_length can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".length
     
    @@ -406,17 +428,17 @@ 

    Usage

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -431,17 +453,17 @@ 

    Usage

    opt_nil_p

    -

    Summary

    +

    Summary

    opt_nil_p is an optimization applied when the method nil? is called. It returns true immediately when the receiver is nil and defers to the nil? method in other cases

    -

    TracePoint

    +

    TracePoint

    opt_nil_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".nil?
     
    @@ -455,17 +477,17 @@ 

    Usage

    opt_or

    -

    Summary

    +

    Summary

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -480,17 +502,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -505,16 +527,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -529,17 +551,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -555,16 +577,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -577,17 +599,17 @@ 

    Usage

    opt_succ

    -

    Summary

    +

    Summary

    opt_succ is a specialization of the opt_send_without_block instruction when the method being called is succ. Fast paths exist within CRuby when the receiver is either a String or a Fixnum.

    -

    TracePoint

    +

    TracePoint

    opt_succ can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".succ
     
    @@ -601,15 +623,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -630,15 +652,15 @@ 

    Usage

    putnil

    -

    Summary

    +

    Summary

    putnil pushes a global nil object onto the stack.

    -

    TracePoint

    +

    TracePoint

    putnil can dispatch the line event.

    -

    Usage

    +

    Usage

    nil
     
    @@ -651,15 +673,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -672,17 +694,17 @@ 

    Usage

    putobject_int2fix_0

    -

    Summary

    +

    Summary

    putobject_INT2FIX_0_ pushes 0 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 0.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    0
     
    @@ -695,17 +717,17 @@ 

    Usage

    putobject_int2fix_1

    -

    Summary

    +

    Summary

    putobject_INT2FIX_1_ pushes 1 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 1.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    1
     
    @@ -718,15 +740,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -741,15 +763,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -762,15 +784,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    @@ -785,17 +807,17 @@ 

    Usage

    setlocal_wc_0

    -

    Summary

    +

    Summary

    setlocal_WC_0 is a specialized version of the setlocal instruction. It sets the value of a local variable on the current frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     
    
    From ab815b8bdb8cd9361a93f0518ac0a96b86aee8c6 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Tue, 10 May 2022 13:15:56 +0000
    Subject: [PATCH 29/63] deploy: b77d9303412c89073ce5685adfc331d358550d8e
    
    ---
     index.html | 122 ++++++++++++++++++++++++++++++++---------------------
     1 file changed, 74 insertions(+), 48 deletions(-)
    
    diff --git a/index.html b/index.html
    index 0f26d55..4bbfce8 100644
    --- a/index.html
    +++ b/index.html
    @@ -26,6 +26,7 @@
     opt_getinlinecache
     opt_length
     opt_minus
    +opt_mod
     opt_nil_p
     opt_or
     opt_plus
    @@ -451,19 +452,44 @@ 

    Usage


    -

    opt_nil_p

    +

    opt_mod

    Summary

    +

    opt_mod is a specialization of the opt_send_without_block instruction +that occurs when the % operator is used. In CRuby, there are fast paths +for if both operands are integers or both operands are floats.

    + +

    TracePoint

    + +

    opt_eq can dispatch both the c_call and c_return events.

    + +

    Usage

    + +
    4 % 2
    +
    +#   == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,5)> (catch: FALSE)
    +#   0000 putobject                              4                         (   1)[Li]
    +#   0002 putobject                              2
    +#   0004 opt_mod                                <calldata!mid:%, argc:1, ARGS_SIMPLE>[CcCr]
    +#   0006 leave
    +
    + +
    + +

    opt_nil_p

    + +

    Summary

    +

    opt_nil_p is an optimization applied when the method nil? is called. It returns true immediately when the receiver is nil and defers to the nil? method in other cases

    -

    TracePoint

    +

    TracePoint

    opt_nil_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".nil?
     
    @@ -477,17 +503,17 @@ 

    Usage

    opt_or

    -

    Summary

    +

    Summary

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -502,17 +528,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -527,16 +553,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -551,17 +577,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -577,16 +603,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -599,17 +625,17 @@ 

    Usage

    opt_succ

    -

    Summary

    +

    Summary

    opt_succ is a specialization of the opt_send_without_block instruction when the method being called is succ. Fast paths exist within CRuby when the receiver is either a String or a Fixnum.

    -

    TracePoint

    +

    TracePoint

    opt_succ can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".succ
     
    @@ -623,15 +649,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -652,15 +678,15 @@ 

    Usage

    putnil

    -

    Summary

    +

    Summary

    putnil pushes a global nil object onto the stack.

    -

    TracePoint

    +

    TracePoint

    putnil can dispatch the line event.

    -

    Usage

    +

    Usage

    nil
     
    @@ -673,15 +699,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -694,17 +720,17 @@ 

    Usage

    putobject_int2fix_0

    -

    Summary

    +

    Summary

    putobject_INT2FIX_0_ pushes 0 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 0.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    0
     
    @@ -717,17 +743,17 @@ 

    Usage

    putobject_int2fix_1

    -

    Summary

    +

    Summary

    putobject_INT2FIX_1_ pushes 1 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 1.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    1
     
    @@ -740,15 +766,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -763,15 +789,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -784,15 +810,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    @@ -807,17 +833,17 @@ 

    Usage

    setlocal_wc_0

    -

    Summary

    +

    Summary

    setlocal_WC_0 is a specialized version of the setlocal instruction. It sets the value of a local variable on the current frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     
    
    From d6c63def3f880fdc0919686d37693bc1528a1e51 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Tue, 10 May 2022 13:16:29 +0000
    Subject: [PATCH 30/63] deploy: 748275fb8a50a81eea4f0fbc240baa7db789877e
    
    ---
     index.html | 202 +++++++++++++++++++++++++++++------------------------
     1 file changed, 112 insertions(+), 90 deletions(-)
    
    diff --git a/index.html b/index.html
    index 4bbfce8..8934ef6 100644
    --- a/index.html
    +++ b/index.html
    @@ -13,6 +13,7 @@
               branchunless
     definemethod
     dup
    +duparray
     getconstant
     getglobal
     getlocal_wc_0
    @@ -138,18 +139,39 @@ 

    Usage


    -

    getconstant

    +

    duparray

    Summary

    +

    duparray copies a literal Array and pushes it onto the stack.

    + +

    TracePoint

    + +

    duparray can dispatch the line event.

    + +

    Usage

    + +
    [true]
    +
    +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,6)> (catch: FALSE)
    +# 0000 duparray                               [true]                    (   1)[Li]
    +# 0002 leave
    +
    + +
    + +

    getconstant

    + +

    Summary

    +

    getconstant performs a constant lookup and pushes the value of the constant onto the stack.

    -

    TracePoint

    +

    TracePoint

    getconstant does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -165,15 +187,15 @@ 

    Usage

    getglobal

    -

    Summary

    +

    Summary

    getglobal pushes the value of a global variables onto the stack.

    -

    TracePoint

    +

    TracePoint

    getglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $$
     
    @@ -186,17 +208,17 @@ 

    Usage

    getlocal_wc_0

    -

    Summary

    +

    Summary

    getlocal_WC_0 is a specialized version of the getlocal instruction. It fetches the value of a local variable from the current frame determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    getlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5; value
     
    @@ -213,15 +235,15 @@ 

    Usage

    leave

    -

    Summary

    +

    Summary

    leave exits the current frame.

    -

    TracePoint

    +

    TracePoint

    leave does not dispatch any events.

    -

    Usage

    +

    Usage

    ;;
     
    @@ -234,15 +256,15 @@ 

    Usage

    newarray

    -

    Summary

    +

    Summary

    newarray puts a new array initialized with size values from the stack.

    -

    TracePoint

    +

    TracePoint

    newarray dispatches a line event.

    -

    Usage

    +

    Usage

    ["string"]
     
    @@ -255,17 +277,17 @@ 

    Usage

    opt_and

    -

    Summary

    +

    Summary

    opt_and is a specialization of the opt_send_without_block instruction that occurs when the & operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_and can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 & 3
     
    @@ -280,17 +302,17 @@ 

    Usage

    opt_aref

    -

    Summary

    +

    Summary

    opt_aref is a specialization of the opt_send_without_block instruction that occurs when the [] operator is used. In CRuby, there are fast paths if the receiver is an integer, array, or hash.

    -

    TracePoint

    +

    TracePoint

    opt_aref can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    7[2]
     
    @@ -305,17 +327,17 @@ 

    Usage

    opt_div

    -

    Summary

    +

    Summary

    opt_div is a specialization of the opt_send_without_block instruction that occurs when the / operator is used. In CRuby, there are fast paths for if both operands are integers, or if both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_div can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 / 3
     
    @@ -330,17 +352,17 @@ 

    Usage

    opt_empty_p

    -

    Summary

    +

    Summary

    opt_empty_p is an optimization applied when the method empty? is called on a String, Array or a Hash. This optimization can be applied because Ruby knows how to calculate the length of these objects using internal C macros.

    -

    TracePoint

    +

    TracePoint

    opt_empty_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".empty?
     
    @@ -354,17 +376,17 @@ 

    Usage

    opt_eq

    -

    Summary

    +

    Summary

    opt_eq is a specialization of the opt_send_without_block instruction that occurs when the == operator is used. Fast paths exist within CRuby when both operands are integers, floats, symbols or strings.

    -

    TracePoint

    +

    TracePoint

    opt_eq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 == 2
     
    @@ -379,17 +401,17 @@ 

    Usage

    opt_getinlinecache

    -

    Summary

    +

    Summary

    opt_getinlinecache is a wrapper around a series of getconstant instructions that allows skipping past them if the inline cache is currently set.

    -

    TracePoint

    +

    TracePoint

    opt_getinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -405,17 +427,17 @@ 

    Usage

    opt_length

    -

    Summary

    +

    Summary

    opt_length is a specialization of opt_send_without_block, when the length method is called on a Ruby type with a known size. In CRuby there are fast paths when the receiver is either a String, Hash or Array.

    -

    TracePoint

    +

    TracePoint

    opt_length can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".length
     
    @@ -429,17 +451,17 @@ 

    Usage

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -454,17 +476,17 @@ 

    Usage

    opt_mod

    -

    Summary

    +

    Summary

    opt_mod is a specialization of the opt_send_without_block instruction that occurs when the % operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_eq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    4 % 2
     
    @@ -479,17 +501,17 @@ 

    Usage

    opt_nil_p

    -

    Summary

    +

    Summary

    opt_nil_p is an optimization applied when the method nil? is called. It returns true immediately when the receiver is nil and defers to the nil? method in other cases

    -

    TracePoint

    +

    TracePoint

    opt_nil_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".nil?
     
    @@ -503,17 +525,17 @@ 

    Usage

    opt_or

    -

    Summary

    +

    Summary

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -528,17 +550,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -553,16 +575,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -577,17 +599,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -603,16 +625,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -625,17 +647,17 @@ 

    Usage

    opt_succ

    -

    Summary

    +

    Summary

    opt_succ is a specialization of the opt_send_without_block instruction when the method being called is succ. Fast paths exist within CRuby when the receiver is either a String or a Fixnum.

    -

    TracePoint

    +

    TracePoint

    opt_succ can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".succ
     
    @@ -649,15 +671,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -678,15 +700,15 @@ 

    Usage

    putnil

    -

    Summary

    +

    Summary

    putnil pushes a global nil object onto the stack.

    -

    TracePoint

    +

    TracePoint

    putnil can dispatch the line event.

    -

    Usage

    +

    Usage

    nil
     
    @@ -699,15 +721,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -720,17 +742,17 @@ 

    Usage

    putobject_int2fix_0

    -

    Summary

    +

    Summary

    putobject_INT2FIX_0_ pushes 0 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 0.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    0
     
    @@ -743,17 +765,17 @@ 

    Usage

    putobject_int2fix_1

    -

    Summary

    +

    Summary

    putobject_INT2FIX_1_ pushes 1 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 1.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    1
     
    @@ -766,15 +788,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -789,15 +811,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -810,15 +832,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    @@ -833,17 +855,17 @@ 

    Usage

    setlocal_wc_0

    -

    Summary

    +

    Summary

    setlocal_WC_0 is a specialized version of the setlocal instruction. It sets the value of a local variable on the current frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     
    
    From 75bc48117af039700bebea1187cb8fa469b52449 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Tue, 10 May 2022 13:54:43 +0000
    Subject: [PATCH 31/63] deploy: 1415997195033cd8a5829bbc445adbe1b036fa70
    
    ---
     index.html | 113 ++++++++++++++++++++++++++++++++---------------------
     1 file changed, 68 insertions(+), 45 deletions(-)
    
    diff --git a/index.html b/index.html
    index 8934ef6..24f134c 100644
    --- a/index.html
    +++ b/index.html
    @@ -29,6 +29,7 @@
     opt_minus
     opt_mod
     opt_nil_p
    +opt_not
     opt_or
     opt_plus
     opt_send_without_block
    @@ -523,19 +524,41 @@ 

    Usage


    -

    opt_or

    +

    opt_not

    Summary

    +

    opt_not negates the value on top of the stack.

    + +

    TracePoint

    + +

    opt_not can dispatch both the c_call and c_return events.

    + +

    Usage

    + +
    !true
    +
    +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,5)> (catch: FALSE)
    +# 0000 putobject                              true                      (   1)[Li]
    +# 0002 opt_not                                <calldata!mid:!, argc:0, ARGS_SIMPLE>[CcCr]
    +# 0004 leave
    +
    + +
    + +

    opt_or

    + +

    Summary

    +

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -550,17 +573,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -575,16 +598,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -599,17 +622,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -625,16 +648,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -647,17 +670,17 @@ 

    Usage

    opt_succ

    -

    Summary

    +

    Summary

    opt_succ is a specialization of the opt_send_without_block instruction when the method being called is succ. Fast paths exist within CRuby when the receiver is either a String or a Fixnum.

    -

    TracePoint

    +

    TracePoint

    opt_succ can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".succ
     
    @@ -671,15 +694,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -700,15 +723,15 @@ 

    Usage

    putnil

    -

    Summary

    +

    Summary

    putnil pushes a global nil object onto the stack.

    -

    TracePoint

    +

    TracePoint

    putnil can dispatch the line event.

    -

    Usage

    +

    Usage

    nil
     
    @@ -721,15 +744,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -742,17 +765,17 @@ 

    Usage

    putobject_int2fix_0

    -

    Summary

    +

    Summary

    putobject_INT2FIX_0_ pushes 0 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 0.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    0
     
    @@ -765,17 +788,17 @@ 

    Usage

    putobject_int2fix_1

    -

    Summary

    +

    Summary

    putobject_INT2FIX_1_ pushes 1 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 1.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    1
     
    @@ -788,15 +811,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -811,15 +834,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -832,15 +855,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    @@ -855,17 +878,17 @@ 

    Usage

    setlocal_wc_0

    -

    Summary

    +

    Summary

    setlocal_WC_0 is a specialized version of the setlocal instruction. It sets the value of a local variable on the current frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     
    
    From 1c8bd560793b810cae82beb13f51dd39c335bb28 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Tue, 10 May 2022 14:33:44 +0000
    Subject: [PATCH 32/63] deploy: 97401f2f461fd298c720ea42ac37dce6dc4fd580
    
    ---
     index.html | 232 ++++++++++++++++++++++++++++++-----------------------
     1 file changed, 130 insertions(+), 102 deletions(-)
    
    diff --git a/index.html b/index.html
    index 24f134c..7fc4d98 100644
    --- a/index.html
    +++ b/index.html
    @@ -11,6 +11,7 @@
           
    +
    + +

    swap

    + +

    Summary

    + +

    swap swaps the top two elements in the stack.

    + +

    TracePoint

    + +

    swap does not dispatch any events.

    + +

    Usage

    + +
    !!defined?([[]])
    +
    +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,16)> (catch: TRUE)
    +# == catch table
    +# | catch type: rescue st: 0001 ed: 0003 sp: 0000 cont: 0005
    +# | == disasm: #<ISeq:defined guard in <main>@-e:0 (0,0)-(-1,-1)> (catch: FALSE)
    +# | local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
    +# | [ 1] "\#$!"@0
    +# | 0000 putnil
    +# | 0001 leave
    +# |------------------------------------------------------------------------
    +# 0000 putnil                                                           (   1)[Li]
    +# 0001 putobject                    "expression"
    +# 0003 swap
    +# 0004 pop
    +# 0005 opt_not                      <callinfo!mid:!, argc:0, ARGS_SIMPLE>, <callcache>
    +# 0008 opt_not                      <callinfo!mid:!, argc:0, ARGS_SIMPLE>, <callcache>
    +# 0011 leave
    +
    + From 8d5974349650c20c13737501352f26357f80edb2 Mon Sep 17 00:00:00 2001 From: kddnewton Date: Tue, 10 May 2022 14:52:30 +0000 Subject: [PATCH 34/63] deploy: 943dcb395b3319bffa101ae28353ed461573e118 --- index.html | 191 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 110 insertions(+), 81 deletions(-) diff --git a/index.html b/index.html index 8c6d6aa..6c2a460 100644 --- a/index.html +++ b/index.html @@ -20,6 +20,7 @@ getlocal_wc_0 leave newarray +newhash opt_and opt_aref opt_div @@ -305,19 +306,47 @@

    Usage


    -

    opt_and

    +

    newhash

    Summary

    +

    newhash puts a new hash onto the stack, using num elements from the +stack. num needs to be even.

    + +

    TracePoint

    + +

    newhash does not dispatch any events.

    + +

    Usage

    + +
    def foo(key, value)
    +  { key => value }
    +end
    +
    +# == disasm: #<ISeq:foo@-e:1 (1,0)-(3,3)> (catch: FALSE)
    +# local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
    +# [ 2] key@0<Arg> [ 1] value@1<Arg>
    +# 0000 getlocal_WC_0                          key@0                     (   2)[LiCa]
    +# 0002 getlocal_WC_0                          value@1
    +# 0004 newhash                                2
    +# 0006 leave                                                            (   3)[Re]
    +
    + +
    + +

    opt_and

    + +

    Summary

    +

    opt_and is a specialization of the opt_send_without_block instruction that occurs when the & operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_and can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 & 3
     
    @@ -332,17 +361,17 @@ 

    Usage

    opt_aref

    -

    Summary

    +

    Summary

    opt_aref is a specialization of the opt_send_without_block instruction that occurs when the [] operator is used. In CRuby, there are fast paths if the receiver is an integer, array, or hash.

    -

    TracePoint

    +

    TracePoint

    opt_aref can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    7[2]
     
    @@ -357,17 +386,17 @@ 

    Usage

    opt_div

    -

    Summary

    +

    Summary

    opt_div is a specialization of the opt_send_without_block instruction that occurs when the / operator is used. In CRuby, there are fast paths for if both operands are integers, or if both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_div can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 / 3
     
    @@ -382,17 +411,17 @@ 

    Usage

    opt_empty_p

    -

    Summary

    +

    Summary

    opt_empty_p is an optimization applied when the method empty? is called on a String, Array or a Hash. This optimization can be applied because Ruby knows how to calculate the length of these objects using internal C macros.

    -

    TracePoint

    +

    TracePoint

    opt_empty_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".empty?
     
    @@ -406,17 +435,17 @@ 

    Usage

    opt_eq

    -

    Summary

    +

    Summary

    opt_eq is a specialization of the opt_send_without_block instruction that occurs when the == operator is used. Fast paths exist within CRuby when both operands are integers, floats, symbols or strings.

    -

    TracePoint

    +

    TracePoint

    opt_eq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 == 2
     
    @@ -431,17 +460,17 @@ 

    Usage

    opt_getinlinecache

    -

    Summary

    +

    Summary

    opt_getinlinecache is a wrapper around a series of getconstant instructions that allows skipping past them if the inline cache is currently set.

    -

    TracePoint

    +

    TracePoint

    opt_getinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -457,17 +486,17 @@ 

    Usage

    opt_length

    -

    Summary

    +

    Summary

    opt_length is a specialization of opt_send_without_block, when the length method is called on a Ruby type with a known size. In CRuby there are fast paths when the receiver is either a String, Hash or Array.

    -

    TracePoint

    +

    TracePoint

    opt_length can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".length
     
    @@ -481,17 +510,17 @@ 

    Usage

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -506,17 +535,17 @@ 

    Usage

    opt_mod

    -

    Summary

    +

    Summary

    opt_mod is a specialization of the opt_send_without_block instruction that occurs when the % operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_eq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    4 % 2
     
    @@ -531,17 +560,17 @@ 

    Usage

    opt_nil_p

    -

    Summary

    +

    Summary

    opt_nil_p is an optimization applied when the method nil? is called. It returns true immediately when the receiver is nil and defers to the nil? method in other cases

    -

    TracePoint

    +

    TracePoint

    opt_nil_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".nil?
     
    @@ -555,15 +584,15 @@ 

    Usage

    opt_not

    -

    Summary

    +

    Summary

    opt_not negates the value on top of the stack.

    -

    TracePoint

    +

    TracePoint

    opt_not can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    !true
     
    @@ -577,17 +606,17 @@ 

    Usage

    opt_or

    -

    Summary

    +

    Summary

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -602,17 +631,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -627,16 +656,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -651,17 +680,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -677,16 +706,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -699,17 +728,17 @@ 

    Usage

    opt_succ

    -

    Summary

    +

    Summary

    opt_succ is a specialization of the opt_send_without_block instruction when the method being called is succ. Fast paths exist within CRuby when the receiver is either a String or a Fixnum.

    -

    TracePoint

    +

    TracePoint

    opt_succ can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".succ
     
    @@ -723,15 +752,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -752,15 +781,15 @@ 

    Usage

    putnil

    -

    Summary

    +

    Summary

    putnil pushes a global nil object onto the stack.

    -

    TracePoint

    +

    TracePoint

    putnil can dispatch the line event.

    -

    Usage

    +

    Usage

    nil
     
    @@ -773,15 +802,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -794,17 +823,17 @@ 

    Usage

    putobject_int2fix_0

    -

    Summary

    +

    Summary

    putobject_INT2FIX_0_ pushes 0 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 0.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    0
     
    @@ -817,17 +846,17 @@ 

    Usage

    putobject_int2fix_1

    -

    Summary

    +

    Summary

    putobject_INT2FIX_1_ pushes 1 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 1.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    1
     
    @@ -840,15 +869,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -863,15 +892,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -884,15 +913,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    @@ -907,17 +936,17 @@ 

    Usage

    setlocal_wc_0

    -

    Summary

    +

    Summary

    setlocal_WC_0 is a specialized version of the setlocal instruction. It sets the value of a local variable on the current frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     
    @@ -934,15 +963,15 @@ 

    Usage

    swap

    -

    Summary

    +

    Summary

    swap swaps the top two elements in the stack.

    -

    TracePoint

    +

    TracePoint

    swap does not dispatch any events.

    -

    Usage

    +

    Usage

    !!defined?([[]])
     
    
    From 13e7779524b5f63c9c0e6ca80f9b13d918f9a67a Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Tue, 10 May 2022 16:52:12 +0000
    Subject: [PATCH 35/63] deploy: 6eb779ab84981e5c95b070f50a54dd0a16bbc595
    
    ---
     index.html | 95 +++++++++++++++++++++++++++++++++---------------------
     1 file changed, 59 insertions(+), 36 deletions(-)
    
    diff --git a/index.html b/index.html
    index 6c2a460..233b8d0 100644
    --- a/index.html
    +++ b/index.html
    @@ -36,6 +36,7 @@
     opt_plus
     opt_send_without_block
     opt_setinlinecache
    +opt_str_freeze
     opt_str_uminus
     opt_succ
     pop
    @@ -704,19 +705,41 @@ 

    Usage


    -

    opt_str_uminus

    +

    opt_str_freeze

    Summary

    -

    opt_str_uminus pushes a frozen known string value with no interpolation +

    opt_str_freeze pushes a frozen known string value with no interpolation onto the stack.

    TracePoint

    -

    opt_str_uminus does not dispatch any events.

    +

    opt_str_freeze does not dispatch any events.

    Usage

    +
    'hello'.freeze
    +
    +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,14)> (catch: FALSE)
    +# 0000 opt_str_freeze                         "hello", <calldata!mid:freeze, argc:0, ARGS_SIMPLE>(   1)[Li]
    +# 0003 leave
    +
    + +
    + +

    opt_str_uminus

    + +

    Summary

    + +

    opt_str_uminus pushes a frozen known string value with no interpolation +onto the stack.

    + +

    TracePoint

    + +

    opt_str_uminus does not dispatch any events.

    + +

    Usage

    +
    -"string"
     
     # == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,6)> (catch: FALSE)
    @@ -728,17 +751,17 @@ 

    Usage

    opt_succ

    -

    Summary

    +

    Summary

    opt_succ is a specialization of the opt_send_without_block instruction when the method being called is succ. Fast paths exist within CRuby when the receiver is either a String or a Fixnum.

    -

    TracePoint

    +

    TracePoint

    opt_succ can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".succ
     
    @@ -752,15 +775,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -781,15 +804,15 @@ 

    Usage

    putnil

    -

    Summary

    +

    Summary

    putnil pushes a global nil object onto the stack.

    -

    TracePoint

    +

    TracePoint

    putnil can dispatch the line event.

    -

    Usage

    +

    Usage

    nil
     
    @@ -802,15 +825,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -823,17 +846,17 @@ 

    Usage

    putobject_int2fix_0

    -

    Summary

    +

    Summary

    putobject_INT2FIX_0_ pushes 0 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 0.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    0
     
    @@ -846,17 +869,17 @@ 

    Usage

    putobject_int2fix_1

    -

    Summary

    +

    Summary

    putobject_INT2FIX_1_ pushes 1 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 1.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    1
     
    @@ -869,15 +892,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -892,15 +915,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -913,15 +936,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    @@ -936,17 +959,17 @@ 

    Usage

    setlocal_wc_0

    -

    Summary

    +

    Summary

    setlocal_WC_0 is a specialized version of the setlocal instruction. It sets the value of a local variable on the current frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     
    @@ -963,15 +986,15 @@ 

    Usage

    swap

    -

    Summary

    +

    Summary

    swap swaps the top two elements in the stack.

    -

    TracePoint

    +

    TracePoint

    swap does not dispatch any events.

    -

    Usage

    +

    Usage

    !!defined?([[]])
     
    
    From 4c42b78d27bcb0d6ab0a6c9fd96ea6f4fc665418 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Tue, 10 May 2022 16:52:46 +0000
    Subject: [PATCH 36/63] deploy: b0c60ab6beb57d9618992d1fcc9aba13d26a5d2a
    
    ---
     index.html | 232 +++++++++++++++++++++++++++++------------------------
     1 file changed, 127 insertions(+), 105 deletions(-)
    
    diff --git a/index.html b/index.html
    index 233b8d0..79f3122 100644
    --- a/index.html
    +++ b/index.html
    @@ -14,6 +14,7 @@
     concatarray
     definemethod
     dup
    +dup_hash
     duparray
     getconstant
     getglobal
    @@ -171,18 +172,39 @@ 

    Usage


    -

    duparray

    +

    dup_hash

    Summary

    -

    duparray copies a literal Array and pushes it onto the stack.

    +

    duphash pushes a hash onto the stack

    TracePoint

    -

    duparray can dispatch the line event.

    +

    duphash can dispatch the line event.

    Usage

    +
    { a: 1 }
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,8)> (catch: FALSE)
    +# 0000 duphash                                {:a=>1}                   (   1)[Li]
    +# 0002 leave
    +
    + +
    + +

    duparray

    + +

    Summary

    + +

    duparray copies a literal Array and pushes it onto the stack.

    + +

    TracePoint

    + +

    duparray can dispatch the line event.

    + +

    Usage

    +
    [true]
     
     # == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,6)> (catch: FALSE)
    @@ -194,16 +216,16 @@ 

    Usage

    getconstant

    -

    Summary

    +

    Summary

    getconstant performs a constant lookup and pushes the value of the constant onto the stack.

    -

    TracePoint

    +

    TracePoint

    getconstant does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -219,15 +241,15 @@ 

    Usage

    getglobal

    -

    Summary

    +

    Summary

    getglobal pushes the value of a global variables onto the stack.

    -

    TracePoint

    +

    TracePoint

    getglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $$
     
    @@ -240,17 +262,17 @@ 

    Usage

    getlocal_wc_0

    -

    Summary

    +

    Summary

    getlocal_WC_0 is a specialized version of the getlocal instruction. It fetches the value of a local variable from the current frame determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    getlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5; value
     
    @@ -267,15 +289,15 @@ 

    Usage

    leave

    -

    Summary

    +

    Summary

    leave exits the current frame.

    -

    TracePoint

    +

    TracePoint

    leave does not dispatch any events.

    -

    Usage

    +

    Usage

    ;;
     
    @@ -288,15 +310,15 @@ 

    Usage

    newarray

    -

    Summary

    +

    Summary

    newarray puts a new array initialized with size values from the stack.

    -

    TracePoint

    +

    TracePoint

    newarray dispatches a line event.

    -

    Usage

    +

    Usage

    ["string"]
     
    @@ -309,16 +331,16 @@ 

    Usage

    newhash

    -

    Summary

    +

    Summary

    newhash puts a new hash onto the stack, using num elements from the stack. num needs to be even.

    -

    TracePoint

    +

    TracePoint

    newhash does not dispatch any events.

    -

    Usage

    +

    Usage

    def foo(key, value)
       { key => value }
    @@ -337,17 +359,17 @@ 

    Usage

    opt_and

    -

    Summary

    +

    Summary

    opt_and is a specialization of the opt_send_without_block instruction that occurs when the & operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_and can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 & 3
     
    @@ -362,17 +384,17 @@ 

    Usage

    opt_aref

    -

    Summary

    +

    Summary

    opt_aref is a specialization of the opt_send_without_block instruction that occurs when the [] operator is used. In CRuby, there are fast paths if the receiver is an integer, array, or hash.

    -

    TracePoint

    +

    TracePoint

    opt_aref can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    7[2]
     
    @@ -387,17 +409,17 @@ 

    Usage

    opt_div

    -

    Summary

    +

    Summary

    opt_div is a specialization of the opt_send_without_block instruction that occurs when the / operator is used. In CRuby, there are fast paths for if both operands are integers, or if both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_div can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 / 3
     
    @@ -412,17 +434,17 @@ 

    Usage

    opt_empty_p

    -

    Summary

    +

    Summary

    opt_empty_p is an optimization applied when the method empty? is called on a String, Array or a Hash. This optimization can be applied because Ruby knows how to calculate the length of these objects using internal C macros.

    -

    TracePoint

    +

    TracePoint

    opt_empty_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".empty?
     
    @@ -436,17 +458,17 @@ 

    Usage

    opt_eq

    -

    Summary

    +

    Summary

    opt_eq is a specialization of the opt_send_without_block instruction that occurs when the == operator is used. Fast paths exist within CRuby when both operands are integers, floats, symbols or strings.

    -

    TracePoint

    +

    TracePoint

    opt_eq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 == 2
     
    @@ -461,17 +483,17 @@ 

    Usage

    opt_getinlinecache

    -

    Summary

    +

    Summary

    opt_getinlinecache is a wrapper around a series of getconstant instructions that allows skipping past them if the inline cache is currently set.

    -

    TracePoint

    +

    TracePoint

    opt_getinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -487,17 +509,17 @@ 

    Usage

    opt_length

    -

    Summary

    +

    Summary

    opt_length is a specialization of opt_send_without_block, when the length method is called on a Ruby type with a known size. In CRuby there are fast paths when the receiver is either a String, Hash or Array.

    -

    TracePoint

    +

    TracePoint

    opt_length can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".length
     
    @@ -511,17 +533,17 @@ 

    Usage

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -536,17 +558,17 @@ 

    Usage

    opt_mod

    -

    Summary

    +

    Summary

    opt_mod is a specialization of the opt_send_without_block instruction that occurs when the % operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_eq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    4 % 2
     
    @@ -561,17 +583,17 @@ 

    Usage

    opt_nil_p

    -

    Summary

    +

    Summary

    opt_nil_p is an optimization applied when the method nil? is called. It returns true immediately when the receiver is nil and defers to the nil? method in other cases

    -

    TracePoint

    +

    TracePoint

    opt_nil_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".nil?
     
    @@ -585,15 +607,15 @@ 

    Usage

    opt_not

    -

    Summary

    +

    Summary

    opt_not negates the value on top of the stack.

    -

    TracePoint

    +

    TracePoint

    opt_not can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    !true
     
    @@ -607,17 +629,17 @@ 

    Usage

    opt_or

    -

    Summary

    +

    Summary

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -632,17 +654,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -657,16 +679,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -681,17 +703,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -707,16 +729,16 @@ 

    Usage

    opt_str_freeze

    -

    Summary

    +

    Summary

    opt_str_freeze pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_freeze does not dispatch any events.

    -

    Usage

    +

    Usage

    'hello'.freeze
     
    @@ -729,16 +751,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -751,17 +773,17 @@ 

    Usage

    opt_succ

    -

    Summary

    +

    Summary

    opt_succ is a specialization of the opt_send_without_block instruction when the method being called is succ. Fast paths exist within CRuby when the receiver is either a String or a Fixnum.

    -

    TracePoint

    +

    TracePoint

    opt_succ can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".succ
     
    @@ -775,15 +797,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -804,15 +826,15 @@ 

    Usage

    putnil

    -

    Summary

    +

    Summary

    putnil pushes a global nil object onto the stack.

    -

    TracePoint

    +

    TracePoint

    putnil can dispatch the line event.

    -

    Usage

    +

    Usage

    nil
     
    @@ -825,15 +847,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -846,17 +868,17 @@ 

    Usage

    putobject_int2fix_0

    -

    Summary

    +

    Summary

    putobject_INT2FIX_0_ pushes 0 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 0.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    0
     
    @@ -869,17 +891,17 @@ 

    Usage

    putobject_int2fix_1

    -

    Summary

    +

    Summary

    putobject_INT2FIX_1_ pushes 1 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 1.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    1
     
    @@ -892,15 +914,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -915,15 +937,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -936,15 +958,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    @@ -959,17 +981,17 @@ 

    Usage

    setlocal_wc_0

    -

    Summary

    +

    Summary

    setlocal_WC_0 is a specialized version of the setlocal instruction. It sets the value of a local variable on the current frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     
    @@ -986,15 +1008,15 @@ 

    Usage

    swap

    -

    Summary

    +

    Summary

    swap swaps the top two elements in the stack.

    -

    TracePoint

    +

    TracePoint

    swap does not dispatch any events.

    -

    Usage

    +

    Usage

    !!defined?([[]])
     
    
    From 08d9e2d162bd5860e419a7a09602a8939f7b6486 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Tue, 10 May 2022 16:53:09 +0000
    Subject: [PATCH 37/63] deploy: 368cd70de8a84fbf85920172ce3c203d89b58b95
    
    ---
     index.html | 225 +++++++++++++++++++++++++++++++----------------------
     1 file changed, 132 insertions(+), 93 deletions(-)
    
    diff --git a/index.html b/index.html
    index 79f3122..6f2a144 100644
    --- a/index.html
    +++ b/index.html
    @@ -19,6 +19,7 @@
     getconstant
     getglobal
     getlocal_wc_0
    +jump
     leave
     newarray
     newhash
    @@ -287,18 +288,56 @@ 

    Usage


    -

    leave

    +

    jump

    Summary

    -

    leave exits the current frame.

    +

    jump has one argument, the jump index, which it uses to set the next +instruction to execute.

    TracePoint

    -

    leave does not dispatch any events.

    +

    There is no trace point for jump.

    Usage

    +
    y = 0; if y == 0 then puts '0' else puts '2' end
    +
    +== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,48)> (catch: FALSE)
    +local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
    +[ 1] y@0
    +0000 putobject_INT2FIX_0_                                             (   1)[Li]
    +0001 setlocal_WC_0                          y@0
    +0003 getlocal_WC_0                          y@0
    +0005 putobject_INT2FIX_0_
    +0006 opt_eq                                 <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
    +0008 branchunless                           20
    +0010 jump                                   12
    +0012 putself
    +0013 putstring                              "0"
    +0015 opt_send_without_block                 <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE>
    +0017 jump                                   25
    +0019 pop
    +0020 putself
    +0021 putstring                              "2"
    +0023 opt_send_without_block                 <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE>
    +0025 leave
    +
    + +
    + +

    leave

    + +

    Summary

    + +

    leave exits the current frame.

    + +

    TracePoint

    + +

    leave does not dispatch any events.

    + +

    Usage

    +
    ;;
     
     # == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,2)> (catch: FALSE)
    @@ -310,15 +349,15 @@ 

    Usage

    newarray

    -

    Summary

    +

    Summary

    newarray puts a new array initialized with size values from the stack.

    -

    TracePoint

    +

    TracePoint

    newarray dispatches a line event.

    -

    Usage

    +

    Usage

    ["string"]
     
    @@ -331,16 +370,16 @@ 

    Usage

    newhash

    -

    Summary

    +

    Summary

    newhash puts a new hash onto the stack, using num elements from the stack. num needs to be even.

    -

    TracePoint

    +

    TracePoint

    newhash does not dispatch any events.

    -

    Usage

    +

    Usage

    def foo(key, value)
       { key => value }
    @@ -359,17 +398,17 @@ 

    Usage

    opt_and

    -

    Summary

    +

    Summary

    opt_and is a specialization of the opt_send_without_block instruction that occurs when the & operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_and can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 & 3
     
    @@ -384,17 +423,17 @@ 

    Usage

    opt_aref

    -

    Summary

    +

    Summary

    opt_aref is a specialization of the opt_send_without_block instruction that occurs when the [] operator is used. In CRuby, there are fast paths if the receiver is an integer, array, or hash.

    -

    TracePoint

    +

    TracePoint

    opt_aref can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    7[2]
     
    @@ -409,17 +448,17 @@ 

    Usage

    opt_div

    -

    Summary

    +

    Summary

    opt_div is a specialization of the opt_send_without_block instruction that occurs when the / operator is used. In CRuby, there are fast paths for if both operands are integers, or if both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_div can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 / 3
     
    @@ -434,17 +473,17 @@ 

    Usage

    opt_empty_p

    -

    Summary

    +

    Summary

    opt_empty_p is an optimization applied when the method empty? is called on a String, Array or a Hash. This optimization can be applied because Ruby knows how to calculate the length of these objects using internal C macros.

    -

    TracePoint

    +

    TracePoint

    opt_empty_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".empty?
     
    @@ -458,17 +497,17 @@ 

    Usage

    opt_eq

    -

    Summary

    +

    Summary

    opt_eq is a specialization of the opt_send_without_block instruction that occurs when the == operator is used. Fast paths exist within CRuby when both operands are integers, floats, symbols or strings.

    -

    TracePoint

    +

    TracePoint

    opt_eq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 == 2
     
    @@ -483,17 +522,17 @@ 

    Usage

    opt_getinlinecache

    -

    Summary

    +

    Summary

    opt_getinlinecache is a wrapper around a series of getconstant instructions that allows skipping past them if the inline cache is currently set.

    -

    TracePoint

    +

    TracePoint

    opt_getinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -509,17 +548,17 @@ 

    Usage

    opt_length

    -

    Summary

    +

    Summary

    opt_length is a specialization of opt_send_without_block, when the length method is called on a Ruby type with a known size. In CRuby there are fast paths when the receiver is either a String, Hash or Array.

    -

    TracePoint

    +

    TracePoint

    opt_length can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".length
     
    @@ -533,17 +572,17 @@ 

    Usage

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -558,17 +597,17 @@ 

    Usage

    opt_mod

    -

    Summary

    +

    Summary

    opt_mod is a specialization of the opt_send_without_block instruction that occurs when the % operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_eq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    4 % 2
     
    @@ -583,17 +622,17 @@ 

    Usage

    opt_nil_p

    -

    Summary

    +

    Summary

    opt_nil_p is an optimization applied when the method nil? is called. It returns true immediately when the receiver is nil and defers to the nil? method in other cases

    -

    TracePoint

    +

    TracePoint

    opt_nil_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".nil?
     
    @@ -607,15 +646,15 @@ 

    Usage

    opt_not

    -

    Summary

    +

    Summary

    opt_not negates the value on top of the stack.

    -

    TracePoint

    +

    TracePoint

    opt_not can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    !true
     
    @@ -629,17 +668,17 @@ 

    Usage

    opt_or

    -

    Summary

    +

    Summary

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -654,17 +693,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -679,16 +718,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -703,17 +742,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -729,16 +768,16 @@ 

    Usage

    opt_str_freeze

    -

    Summary

    +

    Summary

    opt_str_freeze pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_freeze does not dispatch any events.

    -

    Usage

    +

    Usage

    'hello'.freeze
     
    @@ -751,16 +790,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -773,17 +812,17 @@ 

    Usage

    opt_succ

    -

    Summary

    +

    Summary

    opt_succ is a specialization of the opt_send_without_block instruction when the method being called is succ. Fast paths exist within CRuby when the receiver is either a String or a Fixnum.

    -

    TracePoint

    +

    TracePoint

    opt_succ can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".succ
     
    @@ -797,15 +836,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -826,15 +865,15 @@ 

    Usage

    putnil

    -

    Summary

    +

    Summary

    putnil pushes a global nil object onto the stack.

    -

    TracePoint

    +

    TracePoint

    putnil can dispatch the line event.

    -

    Usage

    +

    Usage

    nil
     
    @@ -847,15 +886,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -868,17 +907,17 @@ 

    Usage

    putobject_int2fix_0

    -

    Summary

    +

    Summary

    putobject_INT2FIX_0_ pushes 0 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 0.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    0
     
    @@ -891,17 +930,17 @@ 

    Usage

    putobject_int2fix_1

    -

    Summary

    +

    Summary

    putobject_INT2FIX_1_ pushes 1 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 1.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    1
     
    @@ -914,15 +953,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -937,15 +976,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -958,15 +997,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    @@ -981,17 +1020,17 @@ 

    Usage

    setlocal_wc_0

    -

    Summary

    +

    Summary

    setlocal_WC_0 is a specialized version of the setlocal instruction. It sets the value of a local variable on the current frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     
    @@ -1008,15 +1047,15 @@ 

    Usage

    swap

    -

    Summary

    +

    Summary

    swap swaps the top two elements in the stack.

    -

    TracePoint

    +

    TracePoint

    swap does not dispatch any events.

    -

    Usage

    +

    Usage

    !!defined?([[]])
     
    
    From 76050f804791f285bc08c0ed784e847c02a35c77 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Tue, 10 May 2022 16:53:54 +0000
    Subject: [PATCH 38/63] deploy: fe5506f9382cf73a9f6205e1b960885e50fba09e
    
    ---
     index.html | 242 ++++++++++++++++++++++++++++++++++++++---------------
     1 file changed, 173 insertions(+), 69 deletions(-)
    
    diff --git a/index.html b/index.html
    index 6f2a144..e845022 100644
    --- a/index.html
    +++ b/index.html
    @@ -28,8 +28,12 @@
     opt_div
     opt_empty_p
     opt_eq
    +opt_ge
     opt_getinlinecache
    +opt_gt
    +opt_le
     opt_length
    +opt_lt
     opt_minus
     opt_mod
     opt_nil_p
    @@ -520,19 +524,44 @@ 

    Usage


    -

    opt_getinlinecache

    +

    opt_ge

    Summary

    +

    opt_ge is a specialization of the opt_send_without_block instruction +that occurs when the >= operator is used. Fast paths exist within CRuby when +both operands are integers or floats.

    + +

    TracePoint

    + +

    opt_ge can dispatch both the c_call and c_return events.

    + +

    Usage

    + +
    4 >= 3
    +
    + # == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,6)> (catch: FALSE)
    +# 0000 putobject                              4                         (   1)[Li]
    +# 0002 putobject                              3
    +# 0004 opt_ge                                 <calldata!mid:>=, argc:1, ARGS_SIMPLE>[CcCr]
    +# 0006 leave
    +
    + +
    + +

    opt_getinlinecache

    + +

    Summary

    +

    opt_getinlinecache is a wrapper around a series of getconstant instructions that allows skipping past them if the inline cache is currently set.

    -

    TracePoint

    +

    TracePoint

    opt_getinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -546,19 +575,69 @@ 

    Usage


    +

    opt_gt

    + +

    Summary

    + +

    opt_gt is a specialization of the opt_send_without_block instruction +that occurs when the > operator is used. Fast paths exist within CRuby when +both operands are integers or floats.

    + +

    TracePoint

    + +

    opt_gt can dispatch both the c_call and c_return events.

    + +

    Usage

    + +
    4 > 3
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)
    +# 0000 putobject                              4                         (   1)[Li]
    +# 0002 putobject                              3
    +# 0004 opt_gt                                 <calldata!mid:>, argc:1, ARGS_SIMPLE>[CcCr]
    +# 0006 leave
    +
    + +
    + +

    opt_le

    + +

    Summary

    + +

    opt_le is a specialization of the opt_send_without_block instruction +that occurs when the <= operator is used. Fast paths exist within CRuby when +both operands are integers or floats.

    + +

    TracePoint

    + +

    opt_le can dispatch both the c_call and c_return events.

    + +

    Usage

    + +
    3 <= 4
    +
    + # == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,6)> (catch: FALSE)
    +# 0000 putobject                              3                         (   1)[Li]
    +# 0002 putobject                              4
    +# 0004 opt_le                                 <calldata!mid:<=, argc:1, ARGS_SIMPLE>[CcCr]
    +# 0006 leave
    +
    + +
    +

    opt_length

    -

    Summary

    +

    Summary

    opt_length is a specialization of opt_send_without_block, when the length method is called on a Ruby type with a known size. In CRuby there are fast paths when the receiver is either a String, Hash or Array.

    -

    TracePoint

    +

    TracePoint

    opt_length can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".length
     
    @@ -570,19 +649,44 @@ 

    Usage


    +

    opt_lt

    + +

    Summary

    + +

    opt_lt is a specialization of the opt_send_without_block instruction +that occurs when the < operator is used. Fast paths exist within CRuby when +both operands are integers or floats.

    + +

    TracePoint

    + +

    opt_lt can dispatch both the c_call and c_return events.

    + +

    Usage

    + +
    3 < 4
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)
    +# 0000 putobject                              3                         (   1)[Li]
    +# 0002 putobject                              4
    +# 0004 opt_lt                                 <calldata!mid:<, argc:1, ARGS_SIMPLE>[CcCr]
    +# 0006 leave
    +
    + +
    +

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -597,17 +701,17 @@ 

    Usage

    opt_mod

    -

    Summary

    +

    Summary

    opt_mod is a specialization of the opt_send_without_block instruction that occurs when the % operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_eq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    4 % 2
     
    @@ -622,17 +726,17 @@ 

    Usage

    opt_nil_p

    -

    Summary

    +

    Summary

    opt_nil_p is an optimization applied when the method nil? is called. It returns true immediately when the receiver is nil and defers to the nil? method in other cases

    -

    TracePoint

    +

    TracePoint

    opt_nil_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".nil?
     
    @@ -646,15 +750,15 @@ 

    Usage

    opt_not

    -

    Summary

    +

    Summary

    opt_not negates the value on top of the stack.

    -

    TracePoint

    +

    TracePoint

    opt_not can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    !true
     
    @@ -668,17 +772,17 @@ 

    Usage

    opt_or

    -

    Summary

    +

    Summary

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -693,17 +797,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -718,16 +822,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -742,17 +846,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -768,16 +872,16 @@ 

    Usage

    opt_str_freeze

    -

    Summary

    +

    Summary

    opt_str_freeze pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_freeze does not dispatch any events.

    -

    Usage

    +

    Usage

    'hello'.freeze
     
    @@ -790,16 +894,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -812,17 +916,17 @@ 

    Usage

    opt_succ

    -

    Summary

    +

    Summary

    opt_succ is a specialization of the opt_send_without_block instruction when the method being called is succ. Fast paths exist within CRuby when the receiver is either a String or a Fixnum.

    -

    TracePoint

    +

    TracePoint

    opt_succ can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".succ
     
    @@ -836,15 +940,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -865,15 +969,15 @@ 

    Usage

    putnil

    -

    Summary

    +

    Summary

    putnil pushes a global nil object onto the stack.

    -

    TracePoint

    +

    TracePoint

    putnil can dispatch the line event.

    -

    Usage

    +

    Usage

    nil
     
    @@ -886,15 +990,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -907,17 +1011,17 @@ 

    Usage

    putobject_int2fix_0

    -

    Summary

    +

    Summary

    putobject_INT2FIX_0_ pushes 0 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 0.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    0
     
    @@ -930,17 +1034,17 @@ 

    Usage

    putobject_int2fix_1

    -

    Summary

    +

    Summary

    putobject_INT2FIX_1_ pushes 1 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 1.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    1
     
    @@ -953,15 +1057,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -976,15 +1080,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -997,15 +1101,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    @@ -1020,17 +1124,17 @@ 

    Usage

    setlocal_wc_0

    -

    Summary

    +

    Summary

    setlocal_WC_0 is a specialized version of the setlocal instruction. It sets the value of a local variable on the current frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     
    @@ -1047,15 +1151,15 @@ 

    Usage

    swap

    -

    Summary

    +

    Summary

    swap swaps the top two elements in the stack.

    -

    TracePoint

    +

    TracePoint

    swap does not dispatch any events.

    -

    Usage

    +

    Usage

    !!defined?([[]])
     
    
    From 0b3d660e44f29f1c0a42cff43dfb8a7d1497ace2 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Tue, 10 May 2022 17:55:12 +0000
    Subject: [PATCH 39/63] deploy: 7d6a62250e8c36511485311af6a3ffbaf61b3bd5
    
    ---
     index.html | 206 ++++++++++++++++++++++++++++++-----------------------
     1 file changed, 116 insertions(+), 90 deletions(-)
    
    diff --git a/index.html b/index.html
    index e845022..1ee898e 100644
    --- a/index.html
    +++ b/index.html
    @@ -25,6 +25,7 @@
     newhash
     opt_and
     opt_aref
    +opt_aref_with
     opt_div
     opt_empty_p
     opt_eq
    @@ -450,19 +451,44 @@ 

    Usage


    -

    opt_div

    +

    opt_aref_with

    Summary

    +

    opt_aref_with is a specialization of the opt_aref instruction that +occurs when the [] operator is used with a string argument known at +compile time. In CRuby, there are fast paths if the receiver is a hash.

    + +

    TracePoint

    + +

    opt_aref does not dispatch any events.

    + +

    Usage

    + +
    { 'test' => true }['test']
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,26)> (catch: FALSE)
    +# 0000 duphash                                {"test"=>true}            (   1)[Li]
    +# 0002 opt_aref_with                          "test", <calldata!mid:[], argc:1, ARGS_SIMPLE>
    +# 0005 leave
    +
    +
    + +
    + +

    opt_div

    + +

    Summary

    +

    opt_div is a specialization of the opt_send_without_block instruction that occurs when the / operator is used. In CRuby, there are fast paths for if both operands are integers, or if both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_div can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 / 3
     
    @@ -477,17 +503,17 @@ 

    Usage

    opt_empty_p

    -

    Summary

    +

    Summary

    opt_empty_p is an optimization applied when the method empty? is called on a String, Array or a Hash. This optimization can be applied because Ruby knows how to calculate the length of these objects using internal C macros.

    -

    TracePoint

    +

    TracePoint

    opt_empty_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".empty?
     
    @@ -501,17 +527,17 @@ 

    Usage

    opt_eq

    -

    Summary

    +

    Summary

    opt_eq is a specialization of the opt_send_without_block instruction that occurs when the == operator is used. Fast paths exist within CRuby when both operands are integers, floats, symbols or strings.

    -

    TracePoint

    +

    TracePoint

    opt_eq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 == 2
     
    @@ -526,17 +552,17 @@ 

    Usage

    opt_ge

    -

    Summary

    +

    Summary

    opt_ge is a specialization of the opt_send_without_block instruction that occurs when the >= operator is used. Fast paths exist within CRuby when both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_ge can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    4 >= 3
     
    @@ -551,17 +577,17 @@ 

    Usage

    opt_getinlinecache

    -

    Summary

    +

    Summary

    opt_getinlinecache is a wrapper around a series of getconstant instructions that allows skipping past them if the inline cache is currently set.

    -

    TracePoint

    +

    TracePoint

    opt_getinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -577,17 +603,17 @@ 

    Usage

    opt_gt

    -

    Summary

    +

    Summary

    opt_gt is a specialization of the opt_send_without_block instruction that occurs when the > operator is used. Fast paths exist within CRuby when both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_gt can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    4 > 3
     
    @@ -602,17 +628,17 @@ 

    Usage

    opt_le

    -

    Summary

    +

    Summary

    opt_le is a specialization of the opt_send_without_block instruction that occurs when the <= operator is used. Fast paths exist within CRuby when both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_le can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 <= 4
     
    @@ -627,17 +653,17 @@ 

    Usage

    opt_length

    -

    Summary

    +

    Summary

    opt_length is a specialization of opt_send_without_block, when the length method is called on a Ruby type with a known size. In CRuby there are fast paths when the receiver is either a String, Hash or Array.

    -

    TracePoint

    +

    TracePoint

    opt_length can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".length
     
    @@ -651,17 +677,17 @@ 

    Usage

    opt_lt

    -

    Summary

    +

    Summary

    opt_lt is a specialization of the opt_send_without_block instruction that occurs when the < operator is used. Fast paths exist within CRuby when both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_lt can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 < 4
     
    @@ -676,17 +702,17 @@ 

    Usage

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -701,17 +727,17 @@ 

    Usage

    opt_mod

    -

    Summary

    +

    Summary

    opt_mod is a specialization of the opt_send_without_block instruction that occurs when the % operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_eq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    4 % 2
     
    @@ -726,17 +752,17 @@ 

    Usage

    opt_nil_p

    -

    Summary

    +

    Summary

    opt_nil_p is an optimization applied when the method nil? is called. It returns true immediately when the receiver is nil and defers to the nil? method in other cases

    -

    TracePoint

    +

    TracePoint

    opt_nil_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".nil?
     
    @@ -750,15 +776,15 @@ 

    Usage

    opt_not

    -

    Summary

    +

    Summary

    opt_not negates the value on top of the stack.

    -

    TracePoint

    +

    TracePoint

    opt_not can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    !true
     
    @@ -772,17 +798,17 @@ 

    Usage

    opt_or

    -

    Summary

    +

    Summary

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -797,17 +823,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -822,16 +848,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -846,17 +872,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -872,16 +898,16 @@ 

    Usage

    opt_str_freeze

    -

    Summary

    +

    Summary

    opt_str_freeze pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_freeze does not dispatch any events.

    -

    Usage

    +

    Usage

    'hello'.freeze
     
    @@ -894,16 +920,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -916,17 +942,17 @@ 

    Usage

    opt_succ

    -

    Summary

    +

    Summary

    opt_succ is a specialization of the opt_send_without_block instruction when the method being called is succ. Fast paths exist within CRuby when the receiver is either a String or a Fixnum.

    -

    TracePoint

    +

    TracePoint

    opt_succ can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".succ
     
    @@ -940,15 +966,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -969,15 +995,15 @@ 

    Usage

    putnil

    -

    Summary

    +

    Summary

    putnil pushes a global nil object onto the stack.

    -

    TracePoint

    +

    TracePoint

    putnil can dispatch the line event.

    -

    Usage

    +

    Usage

    nil
     
    @@ -990,15 +1016,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -1011,17 +1037,17 @@ 

    Usage

    putobject_int2fix_0

    -

    Summary

    +

    Summary

    putobject_INT2FIX_0_ pushes 0 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 0.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    0
     
    @@ -1034,17 +1060,17 @@ 

    Usage

    putobject_int2fix_1

    -

    Summary

    +

    Summary

    putobject_INT2FIX_1_ pushes 1 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 1.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    1
     
    @@ -1057,15 +1083,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -1080,15 +1106,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -1101,15 +1127,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    @@ -1124,17 +1150,17 @@ 

    Usage

    setlocal_wc_0

    -

    Summary

    +

    Summary

    setlocal_WC_0 is a specialized version of the setlocal instruction. It sets the value of a local variable on the current frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     
    @@ -1151,15 +1177,15 @@ 

    Usage

    swap

    -

    Summary

    +

    Summary

    swap swaps the top two elements in the stack.

    -

    TracePoint

    +

    TracePoint

    swap does not dispatch any events.

    -

    Usage

    +

    Usage

    !!defined?([[]])
     
    
    From 38096f8eadafeea38c19ea7b5249565eabbc6b17 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Tue, 10 May 2022 18:38:43 +0000
    Subject: [PATCH 40/63] deploy: ea7fa7f196723781c8562f94563ce71c7256feb7
    
    ---
     index.html | 319 ++++++++++++++++++++++++++++++-----------------------
     1 file changed, 179 insertions(+), 140 deletions(-)
    
    diff --git a/index.html b/index.html
    index 1ee898e..ad9b83f 100644
    --- a/index.html
    +++ b/index.html
    @@ -10,7 +10,8 @@
         
    +
    +

    anytostring

    Summary

    @@ -1540,7 +1540,8 @@

    Usage

    - + + diff --git a/style.css b/style.css index 6ad36d8..a7f3588 100644 --- a/style.css +++ b/style.css @@ -10,6 +10,10 @@ main { display: flex; } +a { + color: var(--primary-color); +} + aside { background-color: #f6f6f6; box-shadow: 1px 0 3px 0px rgb(0 0 0 / 33%); @@ -40,7 +44,6 @@ nav { nav a { border-radius: 5px; - color: var(--primary-color); padding: 0.5em 3em 0.5em 1em; text-decoration: none; } From 5213df1664c1c99b83d8c73de68da599890df77a Mon Sep 17 00:00:00 2001 From: kddnewton Date: Wed, 11 May 2022 23:30:19 +0000 Subject: [PATCH 53/63] deploy: d81bc4c19bf3bba3bb7a6926803f93b8fcf8e58c --- index.html | 165 +++++++++++++++++++++++++++-------------------------- 1 file changed, 84 insertions(+), 81 deletions(-) diff --git a/index.html b/index.html index adc6832..de936f4 100644 --- a/index.html +++ b/index.html @@ -109,7 +109,7 @@

    Usage

    "#{5}"
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,6)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,6)> (catch: FALSE)
     # 0000 putobject                              ""                        (   1)[Li]
     # 0002 putobject                              5
     # 0004 dup
    @@ -139,12 +139,12 @@ 

    Usage

    x ||= "foo" puts x -# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,30)> (catch: FALSE) +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(3,6)> (catch: FALSE) # local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1]) # [ 1] x@0 # 0000 putobject true ( 1)[Li] # 0002 setlocal_WC_0 x@0 -# 0004 getlocal_WC_0 x@0 +# 0004 getlocal_WC_0 x@0 ( 2)[Li] # 0006 dup # 0007 branchif 15 # 0009 pop @@ -152,7 +152,7 @@

    Usage

    # 0012 dup # 0013 setlocal_WC_0 x@0 # 0015 pop -# 0016 putself +# 0016 putself ( 3)[Li] # 0017 getlocal_WC_0 x@0 # 0019 opt_send_without_block <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE> # 0021 leave @@ -179,17 +179,17 @@

    Usage

    puts "hi" end -# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,35)> (catch: FALSE) +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(4,3)> (catch: FALSE) # local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1]) # [ 1] x@0 # 0000 putnil ( 1)[Li] # 0001 setlocal_WC_0 x@0 -# 0003 getlocal_WC_0 x@0 +# 0003 getlocal_WC_0 x@0 ( 2)[Li] # 0005 dup # 0006 branchnil 10 # 0008 opt_send_without_block <calldata!mid:to_s, argc:0, ARGS_SIMPLE> # 0010 branchunless 18 -# 0012 putself +# 0012 putself ( 3)[Li] # 0013 putstring "hi" # 0015 opt_send_without_block <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE> # 0017 leave @@ -217,13 +217,13 @@

    Usage

    puts "foo" end -# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,22)> (catch: FALSE) +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(3,3)> (catch: FALSE) # 0000 putobject 2 ( 1)[Li] # 0002 putobject 3 # 0004 opt_plus <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr] # 0006 branchunless 14 -# 0008 putself -# 0009 putstring "hi" +# 0008 putself ( 2)[Li] +# 0009 putstring "foo" # 0011 opt_send_without_block <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE> # 0013 leave # 0014 putnil @@ -248,7 +248,7 @@

    Usage

    [1, *2]
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,6)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,7)> (catch: FALSE)
     # 0000 duparray                               [1]                       (   1)[Li]
     # 0002 putobject                              2
     # 0004 concatarray
    @@ -273,7 +273,7 @@ 

    Usage

    "#{5}"
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,6)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,6)> (catch: FALSE)
     # 0000 putobject                              ""                        (   1)[Li]
     # 0002 putobject                              5
     # 0004 dup
    @@ -299,12 +299,12 @@ 

    Usage

    def value = "value"
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,19)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,19)> (catch: FALSE)
     # 0000 definemethod                           :value, value             (   1)[Li]
     # 0003 putobject                              :value
     # 0005 leave
    -#
    -# == disasm: #<ISeq:value@-e:1 (1,0)-(1,19)> (catch: FALSE)
    +# 
    +# == disasm: #<ISeq:value@<compiled>:1 (1,0)-(1,19)> (catch: FALSE)
     # 0000 putstring                              "value"                   (   1)[Ca]
     # 0002 leave                                  [Re]
     
    @@ -323,7 +323,7 @@

    Usage

    $global = 5
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,11)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,11)> (catch: FALSE)
     # 0000 putobject                              5                         (   1)[Li]
     # 0002 dup
     # 0003 setglobal                              :$global
    @@ -363,7 +363,7 @@ 

    Usage

    [true]
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,6)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,6)> (catch: FALSE)
     # 0000 duparray                               [true]                    (   1)[Li]
     # 0002 leave
     
    @@ -383,7 +383,7 @@

    Usage

    Constant
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,8)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,8)> (catch: FALSE)
     # 0000 opt_getinlinecache                     9, <is:0>                 (   1)[Li]
     # 0003 putobject                              true
     # 0005 getconstant                            :Constant
    @@ -427,12 +427,12 @@ 

    Usage

    value = 5
     value
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,16)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(2,5)> (catch: FALSE)
     # local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
     # [ 1] value@0
     # 0000 putobject                              5                         (   1)[Li]
     # 0002 setlocal_WC_0                          value@0
    -# 0004 getlocal_WC_0                          value@0
    +# 0004 getlocal_WC_0                          value@0                   (   2)[Li]
     # 0006 leave
     
    @@ -444,7 +444,7 @@

    Summary

    TracePoint

    -

    There is no trace point for intern.

    +

    There is no trace point for intern.

    Usage

    @@ -476,25 +476,23 @@

    Usage

    puts "2" end -# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,48)> (catch: FALSE) +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(6,3)> (catch: FALSE) # local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1]) # [ 1] y@0 # 0000 putobject_INT2FIX_0_ ( 1)[Li] # 0001 setlocal_WC_0 y@0 -# 0003 getlocal_WC_0 y@0 +# 0003 getlocal_WC_0 y@0 ( 2)[Li] # 0005 putobject_INT2FIX_0_ # 0006 opt_eq <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr] -# 0008 branchunless 20 -# 0010 jump 12 -# 0012 putself -# 0013 putstring "0" -# 0015 opt_send_without_block <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE> -# 0017 jump 25 -# 0019 pop -# 0020 putself -# 0021 putstring "2" -# 0023 opt_send_without_block <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE> -# 0025 leave +# 0008 branchunless 16 +# 0010 putself ( 3)[Li] +# 0011 putstring "0" +# 0013 opt_send_without_block <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE> +# 0015 leave ( 5) +# 0016 putself [Li] +# 0017 putstring "2" +# 0019 opt_send_without_block <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE> +# 0021 leave

    leave

    @@ -511,8 +509,8 @@

    Usage

    ;;
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,2)> (catch: FALSE)
    -# 0000 putnil
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,2)> (catch: FALSE)
    +# 0000 putnil                                                           (   1)
     # 0001 leave
     
    @@ -530,7 +528,7 @@

    Usage

    ["string"]
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,10)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,10)> (catch: FALSE)
     # 0000 putstring                              "string"                  (   1)[Li]
     # 0002 newarray                               1
     # 0004 leave
    @@ -553,7 +551,12 @@ 

    Usage

    { key => value } end -# == disasm: #<ISeq:foo@-e:1 (1,0)-(3,3)> (catch: FALSE) +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(3,3)> (catch: FALSE) +# 0000 definemethod :foo, foo ( 1)[Li] +# 0003 putobject :foo +# 0005 leave +# +# == disasm: #<ISeq:foo@<compiled>:1 (1,0)-(3,3)> (catch: FALSE) # local table (size: 2, argc: 2 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1]) # [ 2] key@0<Arg> [ 1] value@1<Arg> # 0000 getlocal_WC_0 key@0 ( 2)[LiCa] @@ -579,7 +582,7 @@

    Usage

    y = 1 p (x..y), (x...y) -# == disasm: #<ISeq:<main>@test.rb:1 (1,0)-(3,17)> (catch: FALSE) +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(3,17)> (catch: FALSE) # local table (size: 2, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1]) # [ 2] x@0 [ 1] y@1 # 0000 putobject_INT2FIX_0_ ( 1)[Li] @@ -615,7 +618,7 @@

    Usage

    "#{5}"
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,6)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,6)> (catch: FALSE)
     # 0000 putobject                              ""                        (   1)[Li]
     # 0002 putobject                              5
     # 0004 dup
    @@ -664,7 +667,7 @@ 

    Usage

    7[2]
     
    -# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,4)> (catch: FALSE)
     # 0000 putobject                              7                         (   1)[Li]
     # 0002 putobject                              2
     # 0004 opt_aref                               <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
    @@ -713,7 +716,7 @@ 

    Usage

    # 0003 putobject :key # 0005 putstring "val" # 0007 setn 3 -# 0009 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE> +# 0009 opt_aset <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr] # 0011 pop # 0012 leave
    @@ -734,7 +737,7 @@

    Usage

    2 / 3
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,5)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)
     # 0000 putobject                              2                         (   1)[Li]
     # 0002 putobject                              3
     # 0004 opt_div                                <calldata!mid:/, argc:1, ARGS_SIMPLE>[CcCr]
    @@ -779,7 +782,7 @@ 

    Usage

    2 == 2
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,6)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,6)> (catch: FALSE)
     # 0000 putobject                              2                         (   1)[Li]
     # 0002 putobject                              2
     # 0004 opt_eq                                 <calldata!mid:==, argc:1, ARGS_SIMPLE>[CcCr]
    @@ -825,7 +828,7 @@ 

    Usage

    Constant
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,8)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,8)> (catch: FALSE)
     # 0000 opt_getinlinecache                     9, <is:0>                 (   1)[Li]
     # 0003 putobject                              true
     # 0005 getconstant                            :Constant
    @@ -963,7 +966,7 @@ 

    Usage

    4 % 2
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,5)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)
     # 0000 putobject                              4                         (   1)[Li]
     # 0002 putobject                              2
     # 0004 opt_mod                                <calldata!mid:%, argc:1, ARGS_SIMPLE>[CcCr]
    @@ -1012,7 +1015,7 @@ 

    Usage

    2 != 2
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,6)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,6)> (catch: FALSE)
     # 0000 putobject                              2                         (   1)[Li]
     # 0002 putobject                              2
     # 0004 opt_neq                                <calldata!mid:==, argc:1, ARGS_SIMPLE>, <calldata!mid:!=, argc:1, ARGS_SIMPLE>[CcCr]
    @@ -1034,7 +1037,7 @@ 

    Usage

    [1, x = 2].max
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,14)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,14)> (catch: FALSE)
     # local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
     # [ 1] x@0
     # 0000 putobject_INT2FIX_1_                                             (   1)[Li]
    @@ -1060,7 +1063,7 @@ 

    Usage

    [1, x = 2].min
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,14)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,14)> (catch: FALSE)
     # local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
     # [ 1] x@0
     # 0000 putobject_INT2FIX_1_                                             (   1)[Li]
    @@ -1087,7 +1090,7 @@ 

    Usage

    "".nil?
     
    -# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,9)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,7)> (catch: FALSE)
     # 0000 putstring                              ""                        (   1)[Li]
     # 0002 opt_nil_p                              <calldata!mid:nil?, argc:0, ARGS_SIMPLE>[CcCr]
     # 0004 leave
    @@ -1107,7 +1110,7 @@ 

    Usage

    !true
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,5)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)
     # 0000 putobject                              true                      (   1)[Li]
     # 0002 opt_not                                <calldata!mid:!, argc:0, ARGS_SIMPLE>[CcCr]
     # 0004 leave
    @@ -1152,7 +1155,7 @@ 

    Usage

    2 + 3
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,5)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,5)> (catch: FALSE)
     # 0000 putobject                              2                         (   1)[Li]
     # 0002 putobject                              3
     # 0004 opt_plus                               <calldata!mid:+, argc:1, ARGS_SIMPLE>[CcCr]
    @@ -1174,7 +1177,7 @@ 

    Usage

    puts "Hello, world!"
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,20)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,20)> (catch: FALSE)
     # 0000 putself                                                          (   1)[Li]
     # 0001 putstring                              "Hello, world!"
     # 0003 opt_send_without_block                 <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE>
    @@ -1197,7 +1200,7 @@ 

    Usage

    Constant
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,8)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,8)> (catch: FALSE)
     # 0000 opt_getinlinecache                     9, <is:0>                 (   1)[Li]
     # 0003 putobject                              true
     # 0005 getconstant                            :Constant
    @@ -1221,8 +1224,8 @@ 

    Usage

    "".size
     
    -# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,6)> (catch: FALSE)
    -# 0000 putobject                              8                         (   1)[Li]
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,7)> (catch: FALSE)
    +# 0000 putstring                              ""                        (   1)[Li]
     # 0002 opt_size                               <calldata!mid:size, argc:0, ARGS_SIMPLE>[CcCr]
     # 0004 leave
     
    @@ -1242,7 +1245,7 @@

    Usage

    "hello".freeze
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,14)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,14)> (catch: FALSE)
     # 0000 opt_str_freeze                         "hello", <calldata!mid:freeze, argc:0, ARGS_SIMPLE>(   1)[Li]
     # 0003 leave
     
    @@ -1262,7 +1265,7 @@

    Usage

    -"string"
     
    -# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,6)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,9)> (catch: FALSE)
     # 0000 opt_str_uminus                         "string", <calldata!mid:-@, argc:0, ARGS_SIMPLE>(   1)[Li]
     # 0003 leave
     
    @@ -1283,8 +1286,8 @@

    Usage

    "".succ
     
    -# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,8)> (catch: FALSE)
    -# 0000 putstring                              "a"                       (   1)[Li]
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,7)> (catch: FALSE)
    +# 0000 putstring                              ""                        (   1)[Li]
     # 0002 opt_succ                               <calldata!mid:succ, argc:0, ARGS_SIMPLE>[CcCr]
     # 0004 leave
     
    @@ -1303,7 +1306,7 @@

    Usage

    a ||= 2
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,7)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,7)> (catch: FALSE)
     # local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
     # [ 1] a@0
     # 0000 getlocal_WC_0                          a@0                       (   1)[Li]
    @@ -1349,7 +1352,7 @@ 

    Usage

    5
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,1)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,1)> (catch: FALSE)
     # 0000 putobject                              5                         (   1)[Li]
     # 0002 leave
     
    @@ -1410,7 +1413,7 @@

    Usage

    puts "Hello, world!"
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,20)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,20)> (catch: FALSE)
     # 0000 putself                                                          (   1)[Li]
     # 0001 putstring                              "Hello, world!"
     # 0003 opt_send_without_block                 <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE>
    @@ -1450,7 +1453,7 @@ 

    Usage

    $global = 5
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,11)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,11)> (catch: FALSE)
     # 0000 putobject                              5                         (   1)[Li]
     # 0002 dup
     # 0003 setglobal                              :$global
    @@ -1473,7 +1476,7 @@ 

    Usage

    value = 5
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,9)> (catch: FALSE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,9)> (catch: FALSE)
     # local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
     # [ 1] value@0
     # 0000 putobject                              5                         (   1)[Li]
    @@ -1496,15 +1499,15 @@ 

    Usage

    {}[:key] = 'val'
     
    -== disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,16)> (catch: FALSE)
    -0000 putnil                                                           (   1)[Li]
    -0001 newhash                                0
    -0003 putobject                              :key
    -0005 putstring                              "val"
    -0007 setn                                   3
    -0009 opt_aset                               <calldata!mid:[]=, argc:2, ARGS_SIMPLE>
    -0011 pop
    -0012 leave
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,16)> (catch: FALSE)
    +# 0000 putnil                                                           (   1)[Li]
    +# 0001 newhash                                0
    +# 0003 putobject                              :key
    +# 0005 putstring                              "val"
    +# 0007 setn                                   3
    +# 0009 opt_aset                               <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
    +# 0011 pop
    +# 0012 leave
     

    swap

    @@ -1521,22 +1524,22 @@

    Usage

    !!defined?([[]])
     
    -# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,16)> (catch: TRUE)
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,16)> (catch: TRUE)
     # == catch table
     # | catch type: rescue st: 0001 ed: 0003 sp: 0000 cont: 0005
    -# | == disasm: #<ISeq:defined guard in <main>@-e:0 (0,0)-(-1,-1)> (catch: FALSE)
    +# | == disasm: #<ISeq:defined guard in <compiled>@<compiled>:0 (0,0)-(-1,-1)> (catch: FALSE)
     # | local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
    -# | [ 1] "\#$!"@0
    +# | [ 1] $!@0
     # | 0000 putnil
     # | 0001 leave
     # |------------------------------------------------------------------------
     # 0000 putnil                                                           (   1)[Li]
    -# 0001 putobject                    "expression"
    +# 0001 putobject                              "expression"
     # 0003 swap
     # 0004 pop
    -# 0005 opt_not                      <callinfo!mid:!, argc:0, ARGS_SIMPLE>, <callcache>
    -# 0008 opt_not                      <callinfo!mid:!, argc:0, ARGS_SIMPLE>, <callcache>
    -# 0011 leave
    +# 0005 opt_not                                <calldata!mid:!, argc:0, ARGS_SIMPLE>[CcCr]
    +# 0007 opt_not                                <calldata!mid:!, argc:0, ARGS_SIMPLE>[CcCr]
    +# 0009 leave
     
    From 51fb749f562a3c1507f3d01b2cfb5b24bf69e35e Mon Sep 17 00:00:00 2001 From: kddnewton Date: Wed, 11 May 2022 23:30:44 +0000 Subject: [PATCH 54/63] deploy: ab53a328951567a351fae221f22ea3f78960f02b --- index.html | 192 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 111 insertions(+), 81 deletions(-) diff --git a/index.html b/index.html index de936f4..7165b81 100644 --- a/index.html +++ b/index.html @@ -56,6 +56,7 @@

    YARV Instructions

    opt_le opt_length opt_lt +opt_ltlt opt_minus opt_mod opt_mult @@ -927,19 +928,48 @@

    Usage

    # 0006 leave
    -

    opt_minus

    +

    opt_ltlt

    Summary

    +

    opt_ltlt is a specialization of the opt_send_without_block instruction +that occurs when the << operator is used. Fast paths exists when the +receiver is either a String or an Array

    + +

    TracePoint

    + +

    opt_ltlt can dispatch both the c_call and c_return events.

    + +

    Usage

    + +
    "" << 2
    +
    +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,7)> (catch: FALSE)
    +# 0000 putstring                              ""                        (   1)[Li]
    +# 0002 putobject                              2
    +# 0004 opt_ltlt                               <calldata!mid:<<, argc:1, ARGS_SIMPLE>[CcCr]
    +# 0006 leave
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,7)> (catch: FALSE)
    +# 0000 putstring                              ""                        (   1)[Li]
    +# 0002 putobject                              2
    +# 0004 opt_ltlt                               <calldata!mid:<<, argc:1, ARGS_SIMPLE>[CcCr]
    +# 0006 leave
    +
    + +

    opt_minus

    + +

    Summary

    +

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -952,17 +982,17 @@ 

    Usage

    opt_mod

    -

    Summary

    +

    Summary

    opt_mod is a specialization of the opt_send_without_block instruction that occurs when the % operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_eq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    4 % 2
     
    @@ -975,17 +1005,17 @@ 

    Usage

    opt_mult

    -

    Summary

    +

    Summary

    opt_mult is a specialization of the opt_send_without_block instruction that occurs when the * operator is used. In CRuby, there are fast paths for if both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_mult can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 * 2
     
    @@ -998,7 +1028,7 @@ 

    Usage

    opt_neq

    -

    Summary

    +

    Summary

    opt_neq is an optimisation that tests whether two values at the top of the stack are not equal by testing their equality and performing a logical @@ -1007,11 +1037,11 @@

    Summary

    This allows opt_neq to use the fast paths optimized in opt_eq when both operands are Integers, Floats, Symbols or Strings.

    -

    TracePoint

    +

    TracePoint

    opt_neq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 != 2
     
    @@ -1024,16 +1054,16 @@ 

    Usage

    opt_newarray_max

    -

    Summary

    +

    Summary

    opt_newarray_max is an instruction that represents calling max on an array literal. It is used to optimize quick comparisons of array elements.

    -

    TracePoint

    +

    TracePoint

    opt_newarray_max does not dispatch any events.

    -

    Usage

    +

    Usage

    [1, x = 2].max
     
    @@ -1050,16 +1080,16 @@ 

    Usage

    opt_newarray_min

    -

    Summary

    +

    Summary

    opt_newarray_min is an instruction that represents calling min on an array literal. It is used to optimize quick comparisons of array elements.

    -

    TracePoint

    +

    TracePoint

    opt_newarray_min does not dispatch any events.

    -

    Usage

    +

    Usage

    [1, x = 2].min
     
    @@ -1076,17 +1106,17 @@ 

    Usage

    opt_nil_p

    -

    Summary

    +

    Summary

    opt_nil_p is an optimization applied when the method nil? is called. It returns true immediately when the receiver is nil and defers to the nil? method in other cases

    -

    TracePoint

    +

    TracePoint

    opt_nil_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".nil?
     
    @@ -1098,15 +1128,15 @@ 

    Usage

    opt_not

    -

    Summary

    +

    Summary

    opt_not negates the value on top of the stack.

    -

    TracePoint

    +

    TracePoint

    opt_not can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    !true
     
    @@ -1118,17 +1148,17 @@ 

    Usage

    opt_or

    -

    Summary

    +

    Summary

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -1141,17 +1171,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -1164,16 +1194,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -1186,17 +1216,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -1210,17 +1240,17 @@ 

    Usage

    opt_size

    -

    Summary

    +

    Summary

    opt_size is a specialization of opt_send_without_block, when the size method is called on a Ruby type with a known size. In CRuby there are fast paths when the receiver is either a String, Hash or Array.

    -

    TracePoint

    +

    TracePoint

    opt_size can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".size
     
    @@ -1232,16 +1262,16 @@ 

    Usage

    opt_str_freeze

    -

    Summary

    +

    Summary

    opt_str_freeze pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_freeze does not dispatch any events.

    -

    Usage

    +

    Usage

    "hello".freeze
     
    @@ -1252,16 +1282,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -1272,17 +1302,17 @@ 

    Usage

    opt_succ

    -

    Summary

    +

    Summary

    opt_succ is a specialization of the opt_send_without_block instruction when the method being called is succ. Fast paths exist within CRuby when the receiver is either a String or a Fixnum.

    -

    TracePoint

    +

    TracePoint

    opt_succ can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".succ
     
    @@ -1294,15 +1324,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -1321,15 +1351,15 @@ 

    Usage

    putnil

    -

    Summary

    +

    Summary

    putnil pushes a global nil object onto the stack.

    -

    TracePoint

    +

    TracePoint

    putnil can dispatch the line event.

    -

    Usage

    +

    Usage

    nil
     
    @@ -1340,15 +1370,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -1359,17 +1389,17 @@ 

    Usage

    putobject_int2fix_0

    -

    Summary

    +

    Summary

    putobject_INT2FIX_0_ pushes 0 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 0.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    0
     
    @@ -1380,17 +1410,17 @@ 

    Usage

    putobject_int2fix_1

    -

    Summary

    +

    Summary

    putobject_INT2FIX_1_ pushes 1 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 1.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    1
     
    @@ -1401,15 +1431,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -1422,15 +1452,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -1441,15 +1471,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    @@ -1462,17 +1492,17 @@ 

    Usage

    setlocal_wc_0

    -

    Summary

    +

    Summary

    setlocal_WC_0 is a specialized version of the setlocal instruction. It sets the value of a local variable on the current frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     
    @@ -1487,15 +1517,15 @@ 

    Usage

    setn

    -

    Summary

    +

    Summary

    setn is an instruction for set Nth stack entry to stack top

    -

    TracePoint

    +

    TracePoint

    # setn does not dispatch any events.

    -

    Usage

    +

    Usage

    {}[:key] = 'val'
     
    @@ -1512,15 +1542,15 @@ 

    Usage

    swap

    -

    Summary

    +

    Summary

    swap swaps the top two elements in the stack.

    -

    TracePoint

    +

    TracePoint

    swap does not dispatch any events.

    -

    Usage

    +

    Usage

    !!defined?([[]])
     
    
    From acb259af1f5aba4b3d1042d0945b3cf67a9dbe03 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Wed, 11 May 2022 23:31:12 +0000
    Subject: [PATCH 55/63] deploy: bdc6c865d5afcb496a0938e94d87fd94351856fe
    
    ---
     index.html | 292 +++++++++++++++++++++++++++++++++--------------------
     1 file changed, 181 insertions(+), 111 deletions(-)
    
    diff --git a/index.html b/index.html
    index 7165b81..7cd9bd2 100644
    --- a/index.html
    +++ b/index.html
    @@ -47,6 +47,7 @@ 

    YARV Instructions

    opt_aref opt_aref_with opt_aset +opt_case_dispatch opt_div opt_empty_p opt_eq @@ -722,19 +723,88 @@

    Usage

    # 0012 leave
    -

    opt_div

    +

    opt_case_dispatch

    Summary

    +

    opt_case_dispatch is a branch instruction that moves the control flow for +case statements.

    + +

    It has two arguments: the cdhash and an else_offset index. It pops one value off +the stack: a hash key. opt_case_dispatch looks up the key in the cdhash +and jumps to the corresponding index value, if there is one. +If there is no value in the cdhash, opt_case_dispatch jumps to the else_offset index.

    + +

    The cdhash is a Ruby hash used for handling optimized case statements. +The keys are the conditions of when clauses in the case statement, +and the values are the labels to which to jump. This optimization can be +applied only when the keys can be directly compared.

    + +

    TracePoint

    + +

    There is no trace point for opt_case_dispatch.

    + +

    Usage

    + +
    case 1
    +when 1
    +  puts "foo"
    +else
    +  puts "bar"
    +end
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,49)> (catch: FALSE)
    +# 0000 putobject_INT2FIX_0_                                             (   1)[Li]
    +# 0001 dup
    +# 0002 opt_case_dispatch                      <cdhash>, 12
    +# 0005 putobject_INT2FIX_1_
    +# 0006 topn                                   1
    +# 0008 opt_send_without_block                 <calldata!mid:===, argc:1, FCALL|ARGS_SIMPLE>
    +# 0010 branchif                               19
    +# 0012 pop
    +# 0013 putself
    +# 0014 putstring                              "bar"
    +# 0016 opt_send_without_block                 <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE>
    +# 0018 leave
    +# 0019 pop
    +# 0020 putself
    +# 0021 putstring                              "foo"
    +# 0023 opt_send_without_block                 <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE>
    +# 0025 leave
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(6,3)> (catch: FALSE)
    +# 0000 putobject_INT2FIX_1_                                             (   1)[Li]
    +# 0001 dup
    +# 0002 opt_case_dispatch                      <cdhash>, 12
    +# 0005 putobject_INT2FIX_1_                                             (   2)
    +# 0006 topn                                   1
    +# 0008 opt_send_without_block                 <calldata!mid:===, argc:1, FCALL|ARGS_SIMPLE>
    +# 0010 branchif                               19
    +# 0012 pop                                                              (   5)
    +# 0013 putself                                [Li]
    +# 0014 putstring                              "bar"
    +# 0016 opt_send_without_block                 <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE>
    +# 0018 leave
    +# 0019 pop                                                              (   2)
    +# 0020 putself                                                          (   3)[Li]
    +# 0021 putstring                              "foo"
    +# 0023 opt_send_without_block                 <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE>
    +# 0025 leave                                                            (   5)
    +
    + +

    opt_div

    + +

    Summary

    +

    opt_div is a specialization of the opt_send_without_block instruction that occurs when the / operator is used. In CRuby, there are fast paths for if both operands are integers, or if both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_div can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 / 3
     
    @@ -747,17 +817,17 @@ 

    Usage

    opt_empty_p

    -

    Summary

    +

    Summary

    opt_empty_p is an optimization applied when the method empty? is called on a String, Array or a Hash. This optimization can be applied because Ruby knows how to calculate the length of these objects using internal C macros.

    -

    TracePoint

    +

    TracePoint

    opt_empty_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".empty?
     
    @@ -769,17 +839,17 @@ 

    Usage

    opt_eq

    -

    Summary

    +

    Summary

    opt_eq is a specialization of the opt_send_without_block instruction that occurs when the == operator is used. Fast paths exist within CRuby when both operands are integers, floats, symbols or strings.

    -

    TracePoint

    +

    TracePoint

    opt_eq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 == 2
     
    @@ -792,17 +862,17 @@ 

    Usage

    opt_ge

    -

    Summary

    +

    Summary

    opt_ge is a specialization of the opt_send_without_block instruction that occurs when the >= operator is used. Fast paths exist within CRuby when both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_ge can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    4 >= 3
     
    @@ -815,17 +885,17 @@ 

    Usage

    opt_getinlinecache

    -

    Summary

    +

    Summary

    opt_getinlinecache is a wrapper around a series of getconstant instructions that allows skipping past them if the inline cache is currently set.

    -

    TracePoint

    +

    TracePoint

    opt_getinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -839,17 +909,17 @@ 

    Usage

    opt_gt

    -

    Summary

    +

    Summary

    opt_gt is a specialization of the opt_send_without_block instruction that occurs when the > operator is used. Fast paths exist within CRuby when both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_gt can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    4 > 3
     
    @@ -862,17 +932,17 @@ 

    Usage

    opt_le

    -

    Summary

    +

    Summary

    opt_le is a specialization of the opt_send_without_block instruction that occurs when the <= operator is used. Fast paths exist within CRuby when both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_le can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 <= 4
     
    @@ -885,17 +955,17 @@ 

    Usage

    opt_length

    -

    Summary

    +

    Summary

    opt_length is a specialization of opt_send_without_block, when the length method is called on a Ruby type with a known size. In CRuby there are fast paths when the receiver is either a String, Hash or Array.

    -

    TracePoint

    +

    TracePoint

    opt_length can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".length
     
    @@ -907,17 +977,17 @@ 

    Usage

    opt_lt

    -

    Summary

    +

    Summary

    opt_lt is a specialization of the opt_send_without_block instruction that occurs when the < operator is used. Fast paths exist within CRuby when both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_lt can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 < 4
     
    @@ -930,17 +1000,17 @@ 

    Usage

    opt_ltlt

    -

    Summary

    +

    Summary

    opt_ltlt is a specialization of the opt_send_without_block instruction that occurs when the << operator is used. Fast paths exists when the receiver is either a String or an Array

    -

    TracePoint

    +

    TracePoint

    opt_ltlt can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    "" << 2
     
    @@ -959,17 +1029,17 @@ 

    Usage

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -982,17 +1052,17 @@ 

    Usage

    opt_mod

    -

    Summary

    +

    Summary

    opt_mod is a specialization of the opt_send_without_block instruction that occurs when the % operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_eq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    4 % 2
     
    @@ -1005,17 +1075,17 @@ 

    Usage

    opt_mult

    -

    Summary

    +

    Summary

    opt_mult is a specialization of the opt_send_without_block instruction that occurs when the * operator is used. In CRuby, there are fast paths for if both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_mult can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 * 2
     
    @@ -1028,7 +1098,7 @@ 

    Usage

    opt_neq

    -

    Summary

    +

    Summary

    opt_neq is an optimisation that tests whether two values at the top of the stack are not equal by testing their equality and performing a logical @@ -1037,11 +1107,11 @@

    Summary

    This allows opt_neq to use the fast paths optimized in opt_eq when both operands are Integers, Floats, Symbols or Strings.

    -

    TracePoint

    +

    TracePoint

    opt_neq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 != 2
     
    @@ -1054,16 +1124,16 @@ 

    Usage

    opt_newarray_max

    -

    Summary

    +

    Summary

    opt_newarray_max is an instruction that represents calling max on an array literal. It is used to optimize quick comparisons of array elements.

    -

    TracePoint

    +

    TracePoint

    opt_newarray_max does not dispatch any events.

    -

    Usage

    +

    Usage

    [1, x = 2].max
     
    @@ -1080,16 +1150,16 @@ 

    Usage

    opt_newarray_min

    -

    Summary

    +

    Summary

    opt_newarray_min is an instruction that represents calling min on an array literal. It is used to optimize quick comparisons of array elements.

    -

    TracePoint

    +

    TracePoint

    opt_newarray_min does not dispatch any events.

    -

    Usage

    +

    Usage

    [1, x = 2].min
     
    @@ -1106,17 +1176,17 @@ 

    Usage

    opt_nil_p

    -

    Summary

    +

    Summary

    opt_nil_p is an optimization applied when the method nil? is called. It returns true immediately when the receiver is nil and defers to the nil? method in other cases

    -

    TracePoint

    +

    TracePoint

    opt_nil_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".nil?
     
    @@ -1128,15 +1198,15 @@ 

    Usage

    opt_not

    -

    Summary

    +

    Summary

    opt_not negates the value on top of the stack.

    -

    TracePoint

    +

    TracePoint

    opt_not can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    !true
     
    @@ -1148,17 +1218,17 @@ 

    Usage

    opt_or

    -

    Summary

    +

    Summary

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -1171,17 +1241,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -1194,16 +1264,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -1216,17 +1286,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -1240,17 +1310,17 @@ 

    Usage

    opt_size

    -

    Summary

    +

    Summary

    opt_size is a specialization of opt_send_without_block, when the size method is called on a Ruby type with a known size. In CRuby there are fast paths when the receiver is either a String, Hash or Array.

    -

    TracePoint

    +

    TracePoint

    opt_size can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".size
     
    @@ -1262,16 +1332,16 @@ 

    Usage

    opt_str_freeze

    -

    Summary

    +

    Summary

    opt_str_freeze pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_freeze does not dispatch any events.

    -

    Usage

    +

    Usage

    "hello".freeze
     
    @@ -1282,16 +1352,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -1302,17 +1372,17 @@ 

    Usage

    opt_succ

    -

    Summary

    +

    Summary

    opt_succ is a specialization of the opt_send_without_block instruction when the method being called is succ. Fast paths exist within CRuby when the receiver is either a String or a Fixnum.

    -

    TracePoint

    +

    TracePoint

    opt_succ can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".succ
     
    @@ -1324,15 +1394,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -1351,15 +1421,15 @@ 

    Usage

    putnil

    -

    Summary

    +

    Summary

    putnil pushes a global nil object onto the stack.

    -

    TracePoint

    +

    TracePoint

    putnil can dispatch the line event.

    -

    Usage

    +

    Usage

    nil
     
    @@ -1370,15 +1440,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -1389,17 +1459,17 @@ 

    Usage

    putobject_int2fix_0

    -

    Summary

    +

    Summary

    putobject_INT2FIX_0_ pushes 0 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 0.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    0
     
    @@ -1410,17 +1480,17 @@ 

    Usage

    putobject_int2fix_1

    -

    Summary

    +

    Summary

    putobject_INT2FIX_1_ pushes 1 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 1.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    1
     
    @@ -1431,15 +1501,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -1452,15 +1522,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -1471,15 +1541,15 @@ 

    Usage

    setglobal

    -

    Summary

    +

    Summary

    setglobal sets the value of a global variable.

    -

    TracePoint

    +

    TracePoint

    setglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    @@ -1492,17 +1562,17 @@ 

    Usage

    setlocal_wc_0

    -

    Summary

    +

    Summary

    setlocal_WC_0 is a specialized version of the setlocal instruction. It sets the value of a local variable on the current frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     
    @@ -1517,15 +1587,15 @@ 

    Usage

    setn

    -

    Summary

    +

    Summary

    setn is an instruction for set Nth stack entry to stack top

    -

    TracePoint

    +

    TracePoint

    # setn does not dispatch any events.

    -

    Usage

    +

    Usage

    {}[:key] = 'val'
     
    @@ -1542,15 +1612,15 @@ 

    Usage

    swap

    -

    Summary

    +

    Summary

    swap swaps the top two elements in the stack.

    -

    TracePoint

    +

    TracePoint

    swap does not dispatch any events.

    -

    Usage

    +

    Usage

    !!defined?([[]])
     
    
    From aa610356cae1c7604b0e471fe633abfdaaf248de Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Wed, 11 May 2022 23:31:50 +0000
    Subject: [PATCH 56/63] deploy: eb6df61ca66134e1070cf83395ad0b797af2c20b
    
    ---
     index.html | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
     1 file changed, 50 insertions(+)
    
    diff --git a/index.html b/index.html
    index 7cd9bd2..941276d 100644
    --- a/index.html
    +++ b/index.html
    @@ -85,6 +85,7 @@ 

    YARV Instructions

    setlocal_wc_0 setn swap +topn @@ -1642,6 +1643,55 @@

    Usage

    # 0009 leave
    +

    topn

    + +

    Summary

    + +

    topn has one argument: n. It gets the nth element from the top of the +stack and pushes it on the stack.

    + +

    TracePoint

    + +

    topn does not dispatch any events.

    + +

    Usage

    + +
    case 3
    +when 1..5
    +  puts "foo"
    +end
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,36)> (catch: FALSE)
    +# 0000 putobject                              3                         (   1)[Li]
    +# 0002 putobject                              1..5
    +# 0004 topn                                   1
    +# 0006 opt_send_without_block                 <calldata!mid:===, argc:1, FCALL|ARGS_SIMPLE>
    +# 0008 branchif                               13
    +# 0010 pop
    +# 0011 putnil
    +# 0012 leave
    +# 0013 pop
    +# 0014 putself
    +# 0015 putstring                              "foo"
    +# 0017 opt_send_without_block                 <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE>
    +# 0019 leave
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(4,3)> (catch: FALSE)
    +# 0000 putobject                              3                         (   1)[Li]
    +# 0002 putobject                              1..5                      (   2)
    +# 0004 topn                                   1
    +# 0006 opt_send_without_block                 <calldata!mid:===, argc:1, FCALL|ARGS_SIMPLE>
    +# 0008 branchif                               13
    +# 0010 pop                                                              (   1)
    +# 0011 putnil
    +# 0012 leave                                                            (   3)
    +# 0013 pop                                                              (   2)
    +# 0014 putself                                                          (   3)[Li]
    +# 0015 putstring                              "foo"
    +# 0017 opt_send_without_block                 <calldata!mid:puts, argc:1, FCALL|ARGS_SIMPLE>
    +# 0019 leave
    +
    + From c1a18da8151687eabce8059a7caf612e61d82adf Mon Sep 17 00:00:00 2001 From: kddnewton Date: Wed, 11 May 2022 23:45:32 +0000 Subject: [PATCH 57/63] deploy: 33a48babd0ea02d275fc02d6d448b081a370272b --- index.html | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/index.html b/index.html index 941276d..b135a6c 100644 --- a/index.html +++ b/index.html @@ -86,6 +86,7 @@

    YARV Instructions

    setn swap topn +toregexp @@ -1692,6 +1693,43 @@

    Usage

    # 0019 leave
    +

    toregexp

    + +

    Summary

    + +

    toregexp is generated when string interpolation is used inside a regex +literal //. It pops a defined number of values from the stack, combines +them into a single string and coerces that string into a Regexp object, +which it pushes back onto the stack

    + +

    TracePoint

    + +

    toregexp cannot dispatch any TracePoint events.

    + +

    Usage

    + +
    "/#{true}/"
    +
    +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,9)> (catch: FALSE)
    +# 0000 putobject                              ""                        (   1)[Li]
    +# 0002 putobject                              true
    +# 0004 dup
    +# 0005 objtostring                            <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
    +# 0007 anytostring
    +# 0008 toregexp                               0, 2
    +# 0011 leave
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,11)> (catch: FALSE)
    +# 0000 putobject                              "/"                       (   1)[Li]
    +# 0002 putobject                              true
    +# 0004 dup
    +# 0005 objtostring                            <calldata!mid:to_s, argc:0, FCALL|ARGS_SIMPLE>
    +# 0007 anytostring
    +# 0008 putobject                              "/"
    +# 0010 concatstrings                          3
    +# 0012 leave
    +
    + From f012ba563f2a6314e19c3b7e9a5fb14646b889c5 Mon Sep 17 00:00:00 2001 From: kddnewton Date: Tue, 17 May 2022 13:41:50 +0000 Subject: [PATCH 58/63] deploy: e7928ebf80004a46a22db958af883a879d0d63fa --- index.html | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index b135a6c..7332580 100644 --- a/index.html +++ b/index.html @@ -81,6 +81,7 @@

    YARV Instructions

    putobject_int2fix_1 putself putstring +send setglobal setlocal_wc_0 setn @@ -1541,19 +1542,48 @@

    Usage

    # 0002 leave
    -

    setglobal

    +

    send

    Summary

    -

    setglobal sets the value of a global variable.

    +

    send invokes a method with a block.

    TracePoint

    -

    setglobal does not dispatch any events.

    +

    send does not dispatch any events.

    Usage

    -
    $global = 5
    +
    "hello".tap { |i| p i }
    +
    +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,23)> (catch: FALSE)
    +# 0000 putstring                              "hello"                   (   1)[Li]
    +# 0002 send                                   <calldata!mid:tap, argc:0>, block in <main>
    +# 0005 leave
    +#
    +# == disasm: #<ISeq:block in <main>@-e:1 (1,12)-(1,23)> (catch: FALSE)
    +# local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
    +# [ 1] i@0<Arg>
    +# 0000 putself                                                          (   1)[LiBc]
    +# 0001 getlocal_WC_0                          i@0
    +# 0003 opt_send_without_block                 <calldata!mid:p, argc:1, FCALL|ARGS_SIMPLE>
    +# 0005 leave                                  [Br]
    +# ~~~
    +
    +## setglobal
    +
    +### Summary
    +
    +`setglobal` sets the value of a global variable.
    +
    +### TracePoint
    +
    +`setglobal` does not dispatch any events.
    +
    +### Usage
    +
    +~~~ruby
    +$global = 5
     
     # == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,11)> (catch: FALSE)
     # 0000 putobject                              5                         (   1)[Li]
    
    From 251f3c7e09efcea583094de0ece9d2ab48fdf4e6 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Thu, 19 May 2022 21:13:29 +0000
    Subject: [PATCH 59/63] deploy: 20b58a94e56f44812327376cb1c9d3b35dfabdd6
    
    ---
     index.html | 730 ++++++++++++++++++++++++++++++++++++++---------------
     1 file changed, 532 insertions(+), 198 deletions(-)
    
    diff --git a/index.html b/index.html
    index 7332580..bc5f8fc 100644
    --- a/index.html
    +++ b/index.html
    @@ -23,30 +23,37 @@
         

    YARV Instructions

    -

    anytostring

    +

    adjuststack

    Summary

    +

    adjuststack accepts a single integer argument and removes that many +elements from the top of the stack.

    + +

    TracePoint

    + +

    adjuststack cannot dispatch any TracePoint events.

    + +

    Usage

    + +
    x = [true]
    +x[0] ||= nil
    +x[0]
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(3,4)> (catch: FALSE)
    +# local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
    +# [ 1] x@0
    +# 0000 duparray                               [true]                    (   1)[Li]
    +# 0002 setlocal_WC_0                          x@0
    +# 0004 getlocal_WC_0                          x@0                       (   2)[Li]
    +# 0006 putobject_INT2FIX_0_
    +# 0007 dupn                                   2
    +# 0009 opt_aref                               <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
    +# 0011 dup
    +# 0012 branchif                               21
    +# 0014 pop
    +# 0015 putnil
    +# 0016 opt_aset                               <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
    +# 0018 pop
    +# 0019 jump                                   23
    +# 0021 adjuststack                            3
    +# 0023 getlocal_WC_0                          x@0                       (   3)[Li]
    +# 0025 putobject_INT2FIX_0_
    +# 0026 opt_aref                               <calldata!mid:[], argc:1, ARGS_SIMPLE>[CcCr]
    +# 0028 leave
    +
    + +

    anytostring

    + +

    Summary

    +

    anytostring ensures that the value on top of the stack is a string.

    It pops two values off the stack. If the first value is a string it pushes it back on @@ -106,11 +156,11 @@

    Summary

    This is used in conjunction with objtostring as a fallback for when an object’s to_s method does not return a string

    -

    TracePoint

    +

    TracePoint

    anytostring cannot dispatch any TracePoint events

    -

    Usage

    +

    Usage

    "#{5}"
     
    @@ -126,7 +176,7 @@ 

    Usage

    branchif

    -

    Summary

    +

    Summary

    branchif has one argument: the jump index. It pops one value off the stack: the jump condition.

    @@ -134,11 +184,11 @@

    Summary

    If the value popped off the stack is true, branchif jumps to the jump index and continues executing there.

    -

    TracePoint

    +

    TracePoint

    branchif does not dispatch any events.

    -

    Usage

    +

    Usage

    x = true
     x ||= "foo"
    @@ -165,7 +215,7 @@ 

    Usage

    branchnil

    -

    Summary

    +

    Summary

    branchnil has one argument: the jump index. It pops one value off the stack: the jump condition.

    @@ -173,11 +223,11 @@

    Summary

    If the value popped off the stack is nil, branchnil jumps to the jump index and continues executing there.

    -

    TracePoint

    +

    TracePoint

    There is no trace point for branchnil.

    -

    Usage

    +

    Usage

    x = nil
     if x&.to_s
    @@ -204,7 +254,7 @@ 

    Usage

    branchunless

    -

    Summary

    +

    Summary

    branchunless has one argument, the jump index and pops one value off the stack, the jump condition.

    @@ -212,11 +262,11 @@

    Summary

    If the value popped off the stack is false or nil, branchunless jumps to the jump index and continues executing there.

    -

    TracePoint

    +

    TracePoint

    branchunless does not dispatch any events.

    -

    Usage

    +

    Usage

    if 2 + 3
       puts "foo"
    @@ -237,7 +287,7 @@ 

    Usage

    concatarray

    -

    Summary

    +

    Summary

    concatarray concatenates the two Arrays on top of the stack.

    @@ -245,11 +295,11 @@

    Summary

    to_a if necessary, and makes sure to dup the first Array if it was already an Array, to avoid mutating it when concatenating.

    -

    TracePoint

    +

    TracePoint

    concatarray can dispatch the line and call events.

    -

    Usage

    +

    Usage

    [1, *2]
     
    @@ -262,7 +312,7 @@ 

    Usage

    concatstrings

    -

    Summary

    +

    Summary

    concatstrings just pops a number of strings from the stack joins them together into a single string and pushes that string back on the stack.

    @@ -270,11 +320,11 @@

    Summary

    This does no coercion and so is always used in conjunction with objtostring and anytostring to ensure the stack contents are always strings

    -

    TracePoint

    +

    TracePoint

    concatstrings can dispatch the line and call events.

    -

    Usage

    +

    Usage

    "#{5}"
     
    @@ -288,19 +338,40 @@ 

    Usage

    # 0010 leave
    +

    defined

    + +

    Summary

    + +

    defined checks if the top value of the stack is defined. If it is, it +pushes its value onto the stack. Otherwise it pushes nil.

    + +

    TracePoint

    + +

    defined cannot dispatch any TracePoint events.

    + +

    Usage

    + +
    defined?(x)
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,11)> (catch: FALSE)
    +# 0000 putself                                                          (   1)[Li]
    +# 0001 defined                                func, :x, "method"
    +# 0005 leave
    +
    +

    definemethod

    -

    Summary

    +

    Summary

    definemethod defines a method on the class of the current value of self. It accepts two arguments. The first is the name of the method being defined. The second is the instruction sequence representing the body of the method.

    -

    TracePoint

    +

    TracePoint

    definemethod does not dispatch any events.

    -

    Usage

    +

    Usage

    def value = "value"
     
    @@ -316,15 +387,15 @@ 

    Usage

    dup

    -

    Summary

    +

    Summary

    dup copies the top value of the stack and pushes it onto the stack.

    -

    TracePoint

    +

    TracePoint

    dup does not dispatch any events.

    -

    Usage

    +

    Usage

    $global = 5
     
    @@ -337,15 +408,15 @@ 

    Usage

    dup_hash

    -

    Summary

    +

    Summary

    duphash pushes a hash onto the stack

    -

    TracePoint

    +

    TracePoint

    duphash can dispatch the line event.

    -

    Usage

    +

    Usage

    { a: 1 }
     
    @@ -356,15 +427,15 @@ 

    Usage

    duparray

    -

    Summary

    +

    Summary

    duparray copies a literal Array and pushes it onto the stack.

    -

    TracePoint

    +

    TracePoint

    duparray can dispatch the line event.

    -

    Usage

    +

    Usage

    [true]
     
    @@ -373,18 +444,55 @@ 

    Usage

    # 0002 leave
    +

    dupn

    + +

    Summary

    + +

    dupn duplicates the top n stack elements.

    + +

    TracePoint

    + +

    dupn does not dispatch any TracePoint events.

    + +

    Usage

    + +
    Object::X ||= true
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,18)> (catch: FALSE)
    +# 0000 opt_getinlinecache                     9, <is:0>                 (   1)[Li]
    +# 0003 putobject                              true
    +# 0005 getconstant                            :Object
    +# 0007 opt_setinlinecache                     <is:0>
    +# 0009 dup
    +# 0010 defined                                constant-from, :X, true
    +# 0014 branchunless                           25
    +# 0016 dup
    +# 0017 putobject                              true
    +# 0019 getconstant                            :X
    +# 0021 dup
    +# 0022 branchif                               32
    +# 0024 pop
    +# 0025 putobject                              true
    +# 0027 dupn                                   2
    +# 0029 swap
    +# 0030 setconstant                            :X
    +# 0032 swap
    +# 0033 pop
    +# 0034 leave
    +
    +

    getconstant

    -

    Summary

    +

    Summary

    getconstant performs a constant lookup and pushes the value of the constant onto the stack.

    -

    TracePoint

    +

    TracePoint

    getconstant does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -398,15 +506,15 @@ 

    Usage

    getglobal

    -

    Summary

    +

    Summary

    getglobal pushes the value of a global variables onto the stack.

    -

    TracePoint

    +

    TracePoint

    getglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $$
     
    @@ -415,19 +523,56 @@ 

    Usage

    # 0002 leave
    +

    getlocal

    + +

    Summary

    + +

    getlocal fetches the value of a local variable from a frame determined by +the level and index arguments. The level is the number of frames back to +look and the index is the index in the local table. It pushes the value it +finds onto the stack.

    + +

    TracePoint

    + +

    getlocal does not dispatch any events.

    + +

    Usage

    + +
    value = 5
    +tap { tap { value } }
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(2,21)> (catch: FALSE)
    +# local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
    +# [ 1] value@0
    +# 0000 putobject                              5                         (   1)[Li]
    +# 0002 setlocal_WC_0                          value@0
    +# 0004 putself                                                          (   2)[Li]
    +# 0005 send                                   <calldata!mid:tap, argc:0, FCALL>, block in <compiled>
    +# 0008 leave
    +# 
    +# == disasm: #<ISeq:block in <compiled>@<compiled>:2 (2,4)-(2,21)> (catch: FALSE)
    +# 0000 putself                                                          (   2)[LiBc]
    +# 0001 send                                   <calldata!mid:tap, argc:0, FCALL>, block (2 levels) in <compiled>
    +# 0004 leave                                  [Br]
    +# 
    +# == disasm: #<ISeq:block (2 levels) in <compiled>@<compiled>:2 (2,10)-(2,19)> (catch: FALSE)
    +# 0000 getlocal                               value@0, 2                (   2)[LiBc]
    +# 0003 leave                                  [Br]
    +
    +

    getlocal_wc_0

    -

    Summary

    +

    Summary

    getlocal_WC_0 is a specialized version of the getlocal instruction. It fetches the value of a local variable from the current frame determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    getlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     value
    @@ -441,17 +586,48 @@ 

    Usage

    # 0006 leave
    +

    getlocal_wc_1

    + +

    Summary

    + +

    getlocal_WC_1 is a specialized version of the getlocal instruction. It +fetches the value of a local variable from the parent frame determined by +the index given as its only argument.

    + +

    TracePoint

    + +

    getlocal_WC_1 does not dispatch any events.

    + +

    Usage

    + +
    value = 5
    +self.then { value }
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(2,19)> (catch: FALSE)
    +# local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
    +# [ 1] value@0
    +# 0000 putobject                              5                         (   1)[Li]
    +# 0002 setlocal_WC_0                          value@0
    +# 0004 putself                                                          (   2)[Li]
    +# 0005 send                                   <calldata!mid:then, argc:0, FCALL>, block in <compiled>
    +# 0008 leave
    +# 
    +# == disasm: #<ISeq:block in <compiled>@<compiled>:2 (2,10)-(2,19)> (catch: FALSE)
    +# 0000 getlocal_WC_1                          value@0                   (   2)[LiBc]
    +# 0002 leave                                  [Br]
    +
    +

    intern

    -

    Summary

    +

    Summary

    intern converts top element from stack to a symbol.

    -

    TracePoint

    +

    TracePoint

    There is no trace point for intern.

    -

    Usage

    +

    Usage

    :"#{"foo"}"
     
    @@ -463,16 +639,16 @@ 

    Usage

    jump

    -

    Summary

    +

    Summary

    jump has one argument, the jump index, which it uses to set the next instruction to execute.

    -

    TracePoint

    +

    TracePoint

    There is no trace point for jump.

    -

    Usage

    +

    Usage

    y = 0
     if y == 0
    @@ -502,15 +678,15 @@ 

    Usage

    leave

    -

    Summary

    +

    Summary

    leave exits the current frame.

    -

    TracePoint

    +

    TracePoint

    leave does not dispatch any events.

    -

    Usage

    +

    Usage

    ;;
     
    @@ -521,15 +697,15 @@ 

    Usage

    newarray

    -

    Summary

    +

    Summary

    newarray puts a new array initialized with size values from the stack.

    -

    TracePoint

    +

    TracePoint

    newarray dispatches a line event.

    -

    Usage

    +

    Usage

    ["string"]
     
    @@ -541,16 +717,16 @@ 

    Usage

    newhash

    -

    Summary

    +

    Summary

    newhash puts a new hash onto the stack, using num elements from the stack. num needs to be even.

    -

    TracePoint

    +

    TracePoint

    newhash does not dispatch any events.

    -

    Usage

    +

    Usage

    def foo(key, value)
       { key => value }
    @@ -572,16 +748,16 @@ 

    Usage

    newrange

    -

    Summary

    +

    Summary

    newrange creates a Range. It takes one arguments, which is 0 if the end is included or 1 if the end value is excluded.

    -

    TracePoint

    +

    TracePoint

    newrange does not dispatch any events.

    -

    Usage

    +

    Usage

    x = 0
     y = 1
    @@ -605,9 +781,46 @@ 

    Usage

    # 0021 leave
    +

    nop

    + +

    Summary

    + +

    nop is a no-operation instruction. It is used to pad the instruction +sequence so there is a place for other instructions to jump to.

    + +

    TracePoint

    + +

    nop does not dispatch any events.

    + +

    Usage

    + +
    raise rescue true
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,17)> (catch: TRUE)
    +# == catch table
    +# | catch type: rescue st: 0000 ed: 0003 sp: 0000 cont: 0004
    +# | == disasm: #<ISeq:rescue in <compiled>@<compiled>:1 (1,6)-(1,17)> (catch: TRUE)
    +# | local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
    +# | [ 1] $!@0
    +# | 0000 getlocal_WC_0                          $!@0                      (   1)
    +# | 0002 putobject                              StandardError
    +# | 0004 checkmatch                             3
    +# | 0006 branchunless                           11
    +# | 0008 putobject                              true
    +# | 0010 leave
    +# | 0011 getlocal_WC_0                          $!@0
    +# | 0013 throw                                  0
    +# | catch type: retry  st: 0003 ed: 0004 sp: 0000 cont: 0000
    +# |------------------------------------------------------------------------
    +# 0000 putself                                                          (   1)[Li]
    +# 0001 opt_send_without_block                 <calldata!mid:raise, argc:0, FCALL|VCALL|ARGS_SIMPLE>
    +# 0003 nop
    +# 0004 leave
    +
    +

    objtostring

    -

    Summary

    +

    Summary

    objtostring pops a value from the stack, calls to_s on that value and then pushes the result back to the stack.

    @@ -615,11 +828,11 @@

    Summary

    It has fast paths for String, Symbol, Module, Class, Nil, True, False & Number. For everything else it calls to_s

    -

    TracePoint

    +

    TracePoint

    objtostring cannot dispatch any TracePoint events.

    -

    Usage

    +

    Usage

    "#{5}"
     
    @@ -635,17 +848,17 @@ 

    Usage

    opt_and

    -

    Summary

    +

    Summary

    opt_and is a specialization of the opt_send_without_block instruction that occurs when the & operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_and can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 & 3
     
    @@ -658,17 +871,17 @@ 

    Usage

    opt_aref

    -

    Summary

    +

    Summary

    opt_aref is a specialization of the opt_send_without_block instruction that occurs when the [] operator is used. In CRuby, there are fast paths if the receiver is an integer, array, or hash.

    -

    TracePoint

    +

    TracePoint

    opt_aref can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    7[2]
     
    @@ -681,17 +894,17 @@ 

    Usage

    opt_aref_with

    -

    Summary

    +

    Summary

    opt_aref_with is a specialization of the opt_aref instruction that occurs when the [] operator is used with a string argument known at compile time. In CRuby, there are fast paths if the receiver is a hash.

    -

    TracePoint

    +

    TracePoint

    opt_aref_with does not dispatch any events.

    -

    Usage

    +

    Usage

    { 'test' => true }['test']
     
    @@ -703,32 +916,59 @@ 

    Usage

    opt_aset

    -

    Summary

    +

    Summary

    opt_aset is an instruction for setting the hash value by the key in recv[obj] = set format

    -

    TracePoint

    +

    TracePoint

    -

    # There is no trace point for opt_aset.

    +

    There is no trace point for opt_aset.

    -

    Usage

    +

    Usage

    -
    {}[:key] = 'val'
    +
    {}[:key] = value
     
     # == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,16)> (catch: FALSE)
     # 0000 putnil                                                           (   1)[Li]
     # 0001 newhash                                0
     # 0003 putobject                              :key
    -# 0005 putstring                              "val"
    -# 0007 setn                                   3
    -# 0009 opt_aset                               <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
    +# 0005 putself
    +# 0006 opt_send_without_block                 <calldata!mid:value, argc:0, FCALL|VCALL|ARGS_SIMPLE>
    +# 0008 setn                                   3
    +# 0010 opt_aset                               <calldata!mid:[]=, argc:2, ARGS_SIMPLE>[CcCr]
    +# 0012 pop
    +# 0013 leave
    +
    + +

    opt_aset_with

    + +

    Summary

    + +

    opt_aset_with is an instruction for setting the hash value by the known +string key in the recv[obj] = set format.

    + +

    TracePoint

    + +

    There is no trace point for opt_aset_with.

    + +

    Usage

    + +
    {}["key"] = value
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,17)> (catch: FALSE)
    +# 0000 newhash                                0                         (   1)[Li]
    +# 0002 putself
    +# 0003 opt_send_without_block                 <calldata!mid:value, argc:0, FCALL|VCALL|ARGS_SIMPLE>
    +# 0005 swap
    +# 0006 topn                                   1
    +# 0008 opt_aset_with                          "key", <calldata!mid:[]=, argc:2, ARGS_SIMPLE>
     # 0011 pop
     # 0012 leave
     

    opt_case_dispatch

    -

    Summary

    +

    Summary

    opt_case_dispatch is a branch instruction that moves the control flow for case statements.

    @@ -743,11 +983,11 @@

    Summary

    and the values are the labels to which to jump. This optimization can be applied only when the keys can be directly compared.

    -

    TracePoint

    +

    TracePoint

    There is no trace point for opt_case_dispatch.

    -

    Usage

    +

    Usage

    case 1
     when 1
    @@ -797,17 +1037,17 @@ 

    Usage

    opt_div

    -

    Summary

    +

    Summary

    opt_div is a specialization of the opt_send_without_block instruction that occurs when the / operator is used. In CRuby, there are fast paths for if both operands are integers, or if both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_div can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 / 3
     
    @@ -820,17 +1060,17 @@ 

    Usage

    opt_empty_p

    -

    Summary

    +

    Summary

    opt_empty_p is an optimization applied when the method empty? is called on a String, Array or a Hash. This optimization can be applied because Ruby knows how to calculate the length of these objects using internal C macros.

    -

    TracePoint

    +

    TracePoint

    opt_empty_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".empty?
     
    @@ -842,17 +1082,17 @@ 

    Usage

    opt_eq

    -

    Summary

    +

    Summary

    opt_eq is a specialization of the opt_send_without_block instruction that occurs when the == operator is used. Fast paths exist within CRuby when both operands are integers, floats, symbols or strings.

    -

    TracePoint

    +

    TracePoint

    opt_eq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 == 2
     
    @@ -865,17 +1105,17 @@ 

    Usage

    opt_ge

    -

    Summary

    +

    Summary

    opt_ge is a specialization of the opt_send_without_block instruction that occurs when the >= operator is used. Fast paths exist within CRuby when both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_ge can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    4 >= 3
     
    @@ -888,17 +1128,17 @@ 

    Usage

    opt_getinlinecache

    -

    Summary

    +

    Summary

    opt_getinlinecache is a wrapper around a series of getconstant instructions that allows skipping past them if the inline cache is currently set.

    -

    TracePoint

    +

    TracePoint

    opt_getinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -912,17 +1152,17 @@ 

    Usage

    opt_gt

    -

    Summary

    +

    Summary

    opt_gt is a specialization of the opt_send_without_block instruction that occurs when the > operator is used. Fast paths exist within CRuby when both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_gt can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    4 > 3
     
    @@ -935,17 +1175,17 @@ 

    Usage

    opt_le

    -

    Summary

    +

    Summary

    opt_le is a specialization of the opt_send_without_block instruction that occurs when the <= operator is used. Fast paths exist within CRuby when both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_le can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 <= 4
     
    @@ -958,17 +1198,17 @@ 

    Usage

    opt_length

    -

    Summary

    +

    Summary

    opt_length is a specialization of opt_send_without_block, when the length method is called on a Ruby type with a known size. In CRuby there are fast paths when the receiver is either a String, Hash or Array.

    -

    TracePoint

    +

    TracePoint

    opt_length can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".length
     
    @@ -980,17 +1220,17 @@ 

    Usage

    opt_lt

    -

    Summary

    +

    Summary

    opt_lt is a specialization of the opt_send_without_block instruction that occurs when the < operator is used. Fast paths exist within CRuby when both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_lt can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 < 4
     
    @@ -1003,17 +1243,17 @@ 

    Usage

    opt_ltlt

    -

    Summary

    +

    Summary

    opt_ltlt is a specialization of the opt_send_without_block instruction that occurs when the << operator is used. Fast paths exists when the receiver is either a String or an Array

    -

    TracePoint

    +

    TracePoint

    opt_ltlt can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    "" << 2
     
    @@ -1032,17 +1272,17 @@ 

    Usage

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -1055,17 +1295,17 @@ 

    Usage

    opt_mod

    -

    Summary

    +

    Summary

    opt_mod is a specialization of the opt_send_without_block instruction that occurs when the % operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_eq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    4 % 2
     
    @@ -1078,17 +1318,17 @@ 

    Usage

    opt_mult

    -

    Summary

    +

    Summary

    opt_mult is a specialization of the opt_send_without_block instruction that occurs when the * operator is used. In CRuby, there are fast paths for if both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_mult can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 * 2
     
    @@ -1101,7 +1341,7 @@ 

    Usage

    opt_neq

    -

    Summary

    +

    Summary

    opt_neq is an optimisation that tests whether two values at the top of the stack are not equal by testing their equality and performing a logical @@ -1110,11 +1350,11 @@

    Summary

    This allows opt_neq to use the fast paths optimized in opt_eq when both operands are Integers, Floats, Symbols or Strings.

    -

    TracePoint

    +

    TracePoint

    opt_neq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 != 2
     
    @@ -1127,16 +1367,16 @@ 

    Usage

    opt_newarray_max

    -

    Summary

    +

    Summary

    opt_newarray_max is an instruction that represents calling max on an array literal. It is used to optimize quick comparisons of array elements.

    -

    TracePoint

    +

    TracePoint

    opt_newarray_max does not dispatch any events.

    -

    Usage

    +

    Usage

    [1, x = 2].max
     
    @@ -1153,16 +1393,16 @@ 

    Usage

    opt_newarray_min

    -

    Summary

    +

    Summary

    opt_newarray_min is an instruction that represents calling min on an array literal. It is used to optimize quick comparisons of array elements.

    -

    TracePoint

    +

    TracePoint

    opt_newarray_min does not dispatch any events.

    -

    Usage

    +

    Usage

    [1, x = 2].min
     
    @@ -1179,17 +1419,17 @@ 

    Usage

    opt_nil_p

    -

    Summary

    +

    Summary

    opt_nil_p is an optimization applied when the method nil? is called. It returns true immediately when the receiver is nil and defers to the nil? method in other cases

    -

    TracePoint

    +

    TracePoint

    opt_nil_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".nil?
     
    @@ -1201,15 +1441,15 @@ 

    Usage

    opt_not

    -

    Summary

    +

    Summary

    opt_not negates the value on top of the stack.

    -

    TracePoint

    +

    TracePoint

    opt_not can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    !true
     
    @@ -1221,17 +1461,17 @@ 

    Usage

    opt_or

    -

    Summary

    +

    Summary

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -1244,17 +1484,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -1265,18 +1505,40 @@ 

    Usage

    # 0006 leave
    +

    opt_regexpmatch2

    + +

    Summary

    + +

    opt_regexpmatch2 is a specialization of the opt_send_without_block +instruction that occurs when the =~ operator is used.

    + +

    TracePoint

    + +

    opt_regexpmatch2 can dispatch both the c_call and c_return events.

    + +

    Usage

    + +
    /a/ =~ "a"
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,10)> (catch: FALSE)
    +# 0000 putobject                              /a/                       (   1)[Li]
    +# 0002 putstring                              "a"
    +# 0004 opt_regexpmatch2                       <calldata!mid:=~, argc:1, ARGS_SIMPLE>[CcCr]
    +# 0006 leave
    +
    +

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -1289,17 +1551,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -1313,17 +1575,17 @@ 

    Usage

    opt_size

    -

    Summary

    +

    Summary

    opt_size is a specialization of opt_send_without_block, when the size method is called on a Ruby type with a known size. In CRuby there are fast paths when the receiver is either a String, Hash or Array.

    -

    TracePoint

    +

    TracePoint

    opt_size can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".size
     
    @@ -1335,16 +1597,16 @@ 

    Usage

    opt_str_freeze

    -

    Summary

    +

    Summary

    opt_str_freeze pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_freeze does not dispatch any events.

    -

    Usage

    +

    Usage

    "hello".freeze
     
    @@ -1355,16 +1617,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -1375,17 +1637,17 @@ 

    Usage

    opt_succ

    -

    Summary

    +

    Summary

    opt_succ is a specialization of the opt_send_without_block instruction when the method being called is succ. Fast paths exist within CRuby when the receiver is either a String or a Fixnum.

    -

    TracePoint

    +

    TracePoint

    opt_succ can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".succ
     
    @@ -1397,15 +1659,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -1424,15 +1686,15 @@ 

    Usage

    putnil

    -

    Summary

    +

    Summary

    putnil pushes a global nil object onto the stack.

    -

    TracePoint

    +

    TracePoint

    putnil can dispatch the line event.

    -

    Usage

    +

    Usage

    nil
     
    @@ -1443,15 +1705,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -1462,17 +1724,17 @@ 

    Usage

    putobject_int2fix_0

    -

    Summary

    +

    Summary

    putobject_INT2FIX_0_ pushes 0 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 0.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    0
     
    @@ -1483,17 +1745,17 @@ 

    Usage

    putobject_int2fix_1

    -

    Summary

    +

    Summary

    putobject_INT2FIX_1_ pushes 1 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 1.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    1
     
    @@ -1504,15 +1766,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -1525,15 +1787,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -1544,15 +1806,15 @@ 

    Usage

    send

    -

    Summary

    +

    Summary

    send invokes a method with a block.

    -

    TracePoint

    +

    TracePoint

    send does not dispatch any events.

    -

    Usage

    +

    Usage

    "hello".tap { |i| p i }
     
    @@ -1592,19 +1854,58 @@ 

    Usage

    # 0005 leave
    +

    setlocal

    + +

    Summary

    + +

    setlocal sets the value of a local variable on a frame determined by the +level and index arguments. The level is the number of frames back to +look and the index is the index in the local table. It pops the value it is +setting off the stack.

    + +

    TracePoint

    + +

    setlocal does not dispatch any events.

    + +

    Usage

    + +
    value = 5
    +tap { tap { value = 10 } }
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(2,26)> (catch: FALSE)
    +# local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
    +# [ 1] value@0
    +# 0000 putobject                              5                         (   1)[Li]
    +# 0002 setlocal_WC_0                          value@0
    +# 0004 putself                                                          (   2)[Li]
    +# 0005 send                                   <calldata!mid:tap, argc:0, FCALL>, block in <compiled>
    +# 0008 leave
    +# 
    +# == disasm: #<ISeq:block in <compiled>@<compiled>:2 (2,4)-(2,26)> (catch: FALSE)
    +# 0000 putself                                                          (   2)[LiBc]
    +# 0001 send                                   <calldata!mid:tap, argc:0, FCALL>, block (2 levels) in <compiled>
    +# 0004 leave                                  [Br]
    +# 
    +# == disasm: #<ISeq:block (2 levels) in <compiled>@<compiled>:2 (2,10)-(2,24)> (catch: FALSE)
    +# 0000 putobject                              10                        (   2)[LiBc]
    +# 0002 dup
    +# 0003 setlocal                               value@0, 2
    +# 0006 leave                                  [Br]
    +
    +

    setlocal_wc_0

    -

    Summary

    +

    Summary

    setlocal_WC_0 is a specialized version of the setlocal instruction. It sets the value of a local variable on the current frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     
    @@ -1617,17 +1918,50 @@ 

    Usage

    # 0005 leave
    +

    setlocal_wc_1

    + +

    Summary

    + +

    setlocal_WC_1 is a specialized version of the setlocal instruction. It +sets the value of a local variable on the parent frame to the value at the +top of the stack as determined by the index given as its only argument.

    + +

    TracePoint

    + +

    setlocal_WC_1 does not dispatch any events.

    + +

    Usage

    + +
    value = 5
    +self.then { value = 10 }
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(2,24)> (catch: FALSE)
    +# local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
    +# [ 1] value@0
    +# 0000 putobject                              5                         (   1)[Li]
    +# 0002 setlocal_WC_0                          value@0
    +# 0004 putself                                                          (   2)[Li]
    +# 0005 send                                   <calldata!mid:then, argc:0, FCALL>, block in <compiled>
    +# 0008 leave
    +# 
    +# == disasm: #<ISeq:block in <compiled>@<compiled>:2 (2,10)-(2,24)> (catch: FALSE)
    +# 0000 putobject                              10                        (   2)[LiBc]
    +# 0002 dup
    +# 0003 setlocal_WC_1                          value@0
    +# 0005 leave                                  [Br]
    +
    +

    setn

    -

    Summary

    +

    Summary

    setn is an instruction for set Nth stack entry to stack top

    -

    TracePoint

    +

    TracePoint

    # setn does not dispatch any events.

    -

    Usage

    +

    Usage

    {}[:key] = 'val'
     
    @@ -1644,15 +1978,15 @@ 

    Usage

    swap

    -

    Summary

    +

    Summary

    swap swaps the top two elements in the stack.

    -

    TracePoint

    +

    TracePoint

    swap does not dispatch any events.

    -

    Usage

    +

    Usage

    !!defined?([[]])
     
    @@ -1676,16 +2010,16 @@ 

    Usage

    topn

    -

    Summary

    +

    Summary

    topn has one argument: n. It gets the nth element from the top of the stack and pushes it on the stack.

    -

    TracePoint

    +

    TracePoint

    topn does not dispatch any events.

    -

    Usage

    +

    Usage

    case 3
     when 1..5
    @@ -1725,18 +2059,18 @@ 

    Usage

    toregexp

    -

    Summary

    +

    Summary

    toregexp is generated when string interpolation is used inside a regex literal //. It pops a defined number of values from the stack, combines them into a single string and coerces that string into a Regexp object, which it pushes back onto the stack

    -

    TracePoint

    +

    TracePoint

    toregexp cannot dispatch any TracePoint events.

    -

    Usage

    +

    Usage

    "/#{true}/"
     
    
    From 06d833a426eadf37f98dcb0776123578b286017d Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 6 Jun 2022 16:14:36 +0000
    Subject: [PATCH 60/63] deploy: 2fe1e45f0d93eb917856dffd692ca187e440ab91
    
    ---
     index.html | 36 ++++++++++++++++++++++++++++++------
     1 file changed, 30 insertions(+), 6 deletions(-)
    
    diff --git a/index.html b/index.html
    index bc5f8fc..7ce6011 100644
    --- a/index.html
    +++ b/index.html
    @@ -42,6 +42,7 @@ 

    YARV Instructions

    getlocal_wc_0 getlocal_wc_1 intern +invokeblock jump leave newarray @@ -637,20 +638,43 @@

    Usage

    # 0003 leave
    -

    jump

    +

    invokeblock

    Summary

    -

    jump has one argument, the jump index, which it uses to set the next -instruction to execute.

    +

    invokeblock invokes the block passed to a method during a yield.

    TracePoint

    -

    There is no trace point for jump.

    -

    Usage

    -
    y = 0
    +
    def foo; yield; end
    +
    +# == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,19)> (catch: FALSE)
    +# 0000 definemethod                           :foo, foo                 (   1)[Li]
    +# 0003 putobject                              :foo
    +# 0005 leave
    +#
    +# == disasm: #<ISeq:foo@-e:1 (1,0)-(1,19)> (catch: FALSE)
    +# 0000 invokeblock                            <calldata!argc:0, ARGS_SIMPLE>(   1)[LiCa]
    +# 0002 leave                                  [Re]
    +# ~~~
    +
    +## jump
    +
    +### Summary
    +
    +`jump` has one argument, the jump index, which it uses to set the next
    +instruction to execute.
    +
    +### TracePoint
    +
    +There is no trace point for `jump`.
    +
    +### Usage
    +
    +~~~ruby
    +y = 0
     if y == 0
       puts "0"
     else
    
    From b5b9890116786a22a482869c878e6d6fa0a89d2b Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Tue, 2 Aug 2022 12:50:14 +0000
    Subject: [PATCH 61/63] deploy: a74ebb34e3738ee7a06b16a82ce217b1b6f0b93c
    
    ---
     index.html | 393 ++++++++++++++++++++++++++++-------------------------
     1 file changed, 210 insertions(+), 183 deletions(-)
    
    diff --git a/index.html b/index.html
    index 7ce6011..bde81aa 100644
    --- a/index.html
    +++ b/index.html
    @@ -36,6 +36,7 @@ 

    YARV Instructions

    dup_hash duparray dupn +expandarray getconstant getglobal getlocal @@ -482,18 +483,44 @@

    Usage

    # 0034 leave
    -

    getconstant

    +

    expandarray

    Summary

    +

    expandarray looks at the top of the stack, and if the value is an array +it replaces it on the stack with num elements of the array, or nil if +the elements are missing.

    + +

    TracePoint

    + +

    expandarray does not dispatch any events.

    + +

    Usage

    + +
    x, = [true, false, nil]
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,23)> (catch: FALSE)
    +# local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
    +# [ 1] x@0
    +# 0000 duparray                               [true, false, nil]        (   1)[Li]
    +# 0002 dup
    +# 0003 expandarray                            1, 0
    +# 0006 setlocal_WC_0                          x@0
    +# 0008 leave
    +
    + +

    getconstant

    + +

    Summary

    +

    getconstant performs a constant lookup and pushes the value of the constant onto the stack.

    -

    TracePoint

    +

    TracePoint

    getconstant does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -507,15 +534,15 @@ 

    Usage

    getglobal

    -

    Summary

    +

    Summary

    getglobal pushes the value of a global variables onto the stack.

    -

    TracePoint

    +

    TracePoint

    getglobal does not dispatch any events.

    -

    Usage

    +

    Usage

    $$
     
    @@ -526,18 +553,18 @@ 

    Usage

    getlocal

    -

    Summary

    +

    Summary

    getlocal fetches the value of a local variable from a frame determined by the level and index arguments. The level is the number of frames back to look and the index is the index in the local table. It pushes the value it finds onto the stack.

    -

    TracePoint

    +

    TracePoint

    getlocal does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     tap { tap { value } }
    @@ -563,17 +590,17 @@ 

    Usage

    getlocal_wc_0

    -

    Summary

    +

    Summary

    getlocal_WC_0 is a specialized version of the getlocal instruction. It fetches the value of a local variable from the current frame determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    getlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     value
    @@ -589,17 +616,17 @@ 

    Usage

    getlocal_wc_1

    -

    Summary

    +

    Summary

    getlocal_WC_1 is a specialized version of the getlocal instruction. It fetches the value of a local variable from the parent frame determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    getlocal_WC_1 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     self.then { value }
    @@ -620,15 +647,15 @@ 

    Usage

    intern

    -

    Summary

    +

    Summary

    intern converts top element from stack to a symbol.

    -

    TracePoint

    +

    TracePoint

    There is no trace point for intern.

    -

    Usage

    +

    Usage

    :"#{"foo"}"
     
    @@ -640,13 +667,13 @@ 

    Usage

    invokeblock

    -

    Summary

    +

    Summary

    invokeblock invokes the block passed to a method during a yield.

    -

    TracePoint

    +

    TracePoint

    -

    Usage

    +

    Usage

    def foo; yield; end
     
    @@ -702,15 +729,15 @@ 

    Usage

    leave

    -

    Summary

    +

    Summary

    leave exits the current frame.

    -

    TracePoint

    +

    TracePoint

    leave does not dispatch any events.

    -

    Usage

    +

    Usage

    ;;
     
    @@ -721,15 +748,15 @@ 

    Usage

    newarray

    -

    Summary

    +

    Summary

    newarray puts a new array initialized with size values from the stack.

    -

    TracePoint

    +

    TracePoint

    newarray dispatches a line event.

    -

    Usage

    +

    Usage

    ["string"]
     
    @@ -741,16 +768,16 @@ 

    Usage

    newhash

    -

    Summary

    +

    Summary

    newhash puts a new hash onto the stack, using num elements from the stack. num needs to be even.

    -

    TracePoint

    +

    TracePoint

    newhash does not dispatch any events.

    -

    Usage

    +

    Usage

    def foo(key, value)
       { key => value }
    @@ -772,16 +799,16 @@ 

    Usage

    newrange

    -

    Summary

    +

    Summary

    newrange creates a Range. It takes one arguments, which is 0 if the end is included or 1 if the end value is excluded.

    -

    TracePoint

    +

    TracePoint

    newrange does not dispatch any events.

    -

    Usage

    +

    Usage

    x = 0
     y = 1
    @@ -807,16 +834,16 @@ 

    Usage

    nop

    -

    Summary

    +

    Summary

    nop is a no-operation instruction. It is used to pad the instruction sequence so there is a place for other instructions to jump to.

    -

    TracePoint

    +

    TracePoint

    nop does not dispatch any events.

    -

    Usage

    +

    Usage

    raise rescue true
     
    @@ -844,7 +871,7 @@ 

    Usage

    objtostring

    -

    Summary

    +

    Summary

    objtostring pops a value from the stack, calls to_s on that value and then pushes the result back to the stack.

    @@ -852,11 +879,11 @@

    Summary

    It has fast paths for String, Symbol, Module, Class, Nil, True, False & Number. For everything else it calls to_s

    -

    TracePoint

    +

    TracePoint

    objtostring cannot dispatch any TracePoint events.

    -

    Usage

    +

    Usage

    "#{5}"
     
    @@ -872,17 +899,17 @@ 

    Usage

    opt_and

    -

    Summary

    +

    Summary

    opt_and is a specialization of the opt_send_without_block instruction that occurs when the & operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_and can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 & 3
     
    @@ -895,17 +922,17 @@ 

    Usage

    opt_aref

    -

    Summary

    +

    Summary

    opt_aref is a specialization of the opt_send_without_block instruction that occurs when the [] operator is used. In CRuby, there are fast paths if the receiver is an integer, array, or hash.

    -

    TracePoint

    +

    TracePoint

    opt_aref can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    7[2]
     
    @@ -918,17 +945,17 @@ 

    Usage

    opt_aref_with

    -

    Summary

    +

    Summary

    opt_aref_with is a specialization of the opt_aref instruction that occurs when the [] operator is used with a string argument known at compile time. In CRuby, there are fast paths if the receiver is a hash.

    -

    TracePoint

    +

    TracePoint

    opt_aref_with does not dispatch any events.

    -

    Usage

    +

    Usage

    { 'test' => true }['test']
     
    @@ -940,15 +967,15 @@ 

    Usage

    opt_aset

    -

    Summary

    +

    Summary

    opt_aset is an instruction for setting the hash value by the key in recv[obj] = set format

    -

    TracePoint

    +

    TracePoint

    There is no trace point for opt_aset.

    -

    Usage

    +

    Usage

    {}[:key] = value
     
    @@ -966,16 +993,16 @@ 

    Usage

    opt_aset_with

    -

    Summary

    +

    Summary

    opt_aset_with is an instruction for setting the hash value by the known string key in the recv[obj] = set format.

    -

    TracePoint

    +

    TracePoint

    There is no trace point for opt_aset_with.

    -

    Usage

    +

    Usage

    {}["key"] = value
     
    @@ -992,7 +1019,7 @@ 

    Usage

    opt_case_dispatch

    -

    Summary

    +

    Summary

    opt_case_dispatch is a branch instruction that moves the control flow for case statements.

    @@ -1007,11 +1034,11 @@

    Summary

    and the values are the labels to which to jump. This optimization can be applied only when the keys can be directly compared.

    -

    TracePoint

    +

    TracePoint

    There is no trace point for opt_case_dispatch.

    -

    Usage

    +

    Usage

    case 1
     when 1
    @@ -1061,17 +1088,17 @@ 

    Usage

    opt_div

    -

    Summary

    +

    Summary

    opt_div is a specialization of the opt_send_without_block instruction that occurs when the / operator is used. In CRuby, there are fast paths for if both operands are integers, or if both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_div can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 / 3
     
    @@ -1084,17 +1111,17 @@ 

    Usage

    opt_empty_p

    -

    Summary

    +

    Summary

    opt_empty_p is an optimization applied when the method empty? is called on a String, Array or a Hash. This optimization can be applied because Ruby knows how to calculate the length of these objects using internal C macros.

    -

    TracePoint

    +

    TracePoint

    opt_empty_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".empty?
     
    @@ -1106,17 +1133,17 @@ 

    Usage

    opt_eq

    -

    Summary

    +

    Summary

    opt_eq is a specialization of the opt_send_without_block instruction that occurs when the == operator is used. Fast paths exist within CRuby when both operands are integers, floats, symbols or strings.

    -

    TracePoint

    +

    TracePoint

    opt_eq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 == 2
     
    @@ -1129,17 +1156,17 @@ 

    Usage

    opt_ge

    -

    Summary

    +

    Summary

    opt_ge is a specialization of the opt_send_without_block instruction that occurs when the >= operator is used. Fast paths exist within CRuby when both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_ge can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    4 >= 3
     
    @@ -1152,17 +1179,17 @@ 

    Usage

    opt_getinlinecache

    -

    Summary

    +

    Summary

    opt_getinlinecache is a wrapper around a series of getconstant instructions that allows skipping past them if the inline cache is currently set.

    -

    TracePoint

    +

    TracePoint

    opt_getinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -1176,17 +1203,17 @@ 

    Usage

    opt_gt

    -

    Summary

    +

    Summary

    opt_gt is a specialization of the opt_send_without_block instruction that occurs when the > operator is used. Fast paths exist within CRuby when both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_gt can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    4 > 3
     
    @@ -1199,17 +1226,17 @@ 

    Usage

    opt_le

    -

    Summary

    +

    Summary

    opt_le is a specialization of the opt_send_without_block instruction that occurs when the <= operator is used. Fast paths exist within CRuby when both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_le can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 <= 4
     
    @@ -1222,17 +1249,17 @@ 

    Usage

    opt_length

    -

    Summary

    +

    Summary

    opt_length is a specialization of opt_send_without_block, when the length method is called on a Ruby type with a known size. In CRuby there are fast paths when the receiver is either a String, Hash or Array.

    -

    TracePoint

    +

    TracePoint

    opt_length can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".length
     
    @@ -1244,17 +1271,17 @@ 

    Usage

    opt_lt

    -

    Summary

    +

    Summary

    opt_lt is a specialization of the opt_send_without_block instruction that occurs when the < operator is used. Fast paths exist within CRuby when both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_lt can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 < 4
     
    @@ -1267,17 +1294,17 @@ 

    Usage

    opt_ltlt

    -

    Summary

    +

    Summary

    opt_ltlt is a specialization of the opt_send_without_block instruction that occurs when the << operator is used. Fast paths exists when the receiver is either a String or an Array

    -

    TracePoint

    +

    TracePoint

    opt_ltlt can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    "" << 2
     
    @@ -1296,17 +1323,17 @@ 

    Usage

    opt_minus

    -

    Summary

    +

    Summary

    opt_minus is a specialization of the opt_send_without_block instruction that occurs when the - operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_minus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 - 2
     
    @@ -1319,17 +1346,17 @@ 

    Usage

    opt_mod

    -

    Summary

    +

    Summary

    opt_mod is a specialization of the opt_send_without_block instruction that occurs when the % operator is used. In CRuby, there are fast paths for if both operands are integers or both operands are floats.

    -

    TracePoint

    +

    TracePoint

    opt_eq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    4 % 2
     
    @@ -1342,17 +1369,17 @@ 

    Usage

    opt_mult

    -

    Summary

    +

    Summary

    opt_mult is a specialization of the opt_send_without_block instruction that occurs when the * operator is used. In CRuby, there are fast paths for if both operands are integers or floats.

    -

    TracePoint

    +

    TracePoint

    opt_mult can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    3 * 2
     
    @@ -1365,7 +1392,7 @@ 

    Usage

    opt_neq

    -

    Summary

    +

    Summary

    opt_neq is an optimisation that tests whether two values at the top of the stack are not equal by testing their equality and performing a logical @@ -1374,11 +1401,11 @@

    Summary

    This allows opt_neq to use the fast paths optimized in opt_eq when both operands are Integers, Floats, Symbols or Strings.

    -

    TracePoint

    +

    TracePoint

    opt_neq can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 != 2
     
    @@ -1391,16 +1418,16 @@ 

    Usage

    opt_newarray_max

    -

    Summary

    +

    Summary

    opt_newarray_max is an instruction that represents calling max on an array literal. It is used to optimize quick comparisons of array elements.

    -

    TracePoint

    +

    TracePoint

    opt_newarray_max does not dispatch any events.

    -

    Usage

    +

    Usage

    [1, x = 2].max
     
    @@ -1417,16 +1444,16 @@ 

    Usage

    opt_newarray_min

    -

    Summary

    +

    Summary

    opt_newarray_min is an instruction that represents calling min on an array literal. It is used to optimize quick comparisons of array elements.

    -

    TracePoint

    +

    TracePoint

    opt_newarray_min does not dispatch any events.

    -

    Usage

    +

    Usage

    [1, x = 2].min
     
    @@ -1443,17 +1470,17 @@ 

    Usage

    opt_nil_p

    -

    Summary

    +

    Summary

    opt_nil_p is an optimization applied when the method nil? is called. It returns true immediately when the receiver is nil and defers to the nil? method in other cases

    -

    TracePoint

    +

    TracePoint

    opt_nil_p can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".nil?
     
    @@ -1465,15 +1492,15 @@ 

    Usage

    opt_not

    -

    Summary

    +

    Summary

    opt_not negates the value on top of the stack.

    -

    TracePoint

    +

    TracePoint

    opt_not can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    !true
     
    @@ -1485,17 +1512,17 @@ 

    Usage

    opt_or

    -

    Summary

    +

    Summary

    opt_or is a specialization of the opt_send_without_block instruction that occurs when the | operator is used. In CRuby, there are fast paths for if both operands are integers.

    -

    TracePoint

    +

    TracePoint

    opt_or can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 | 3
     
    @@ -1508,17 +1535,17 @@ 

    Usage

    opt_plus

    -

    Summary

    +

    Summary

    opt_plus is a specialization of the opt_send_without_block instruction that occurs when the + operator is used. In CRuby, there are fast paths for if both operands are integers, floats, strings, or arrays.

    -

    TracePoint

    +

    TracePoint

    opt_plus can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    2 + 3
     
    @@ -1531,16 +1558,16 @@ 

    Usage

    opt_regexpmatch2

    -

    Summary

    +

    Summary

    opt_regexpmatch2 is a specialization of the opt_send_without_block instruction that occurs when the =~ operator is used.

    -

    TracePoint

    +

    TracePoint

    opt_regexpmatch2 can dispatch both the c_call and c_return events.

    -

    Usage

    +

    Usage

    /a/ =~ "a"
     
    @@ -1553,16 +1580,16 @@ 

    Usage

    opt_send_without_block

    -

    Summary

    +

    Summary

    opt_send_without_block is a specialization of the send instruction that occurs when a method is being called without a block.

    -

    TracePoint

    +

    TracePoint

    opt_send_without_block does not dispatch any events.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -1575,17 +1602,17 @@ 

    Usage

    opt_setinlinecache

    -

    Summary

    +

    Summary

    opt_setinlinecache is the final instruction after a series of getconstant instructions that populates the inline cache associated with an opt_getinlinecache instruction.

    -

    TracePoint

    +

    TracePoint

    opt_setinlinecache does not dispatch any events.

    -

    Usage

    +

    Usage

    Constant
     
    @@ -1599,17 +1626,17 @@ 

    Usage

    opt_size

    -

    Summary

    +

    Summary

    opt_size is a specialization of opt_send_without_block, when the size method is called on a Ruby type with a known size. In CRuby there are fast paths when the receiver is either a String, Hash or Array.

    -

    TracePoint

    +

    TracePoint

    opt_size can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".size
     
    @@ -1621,16 +1648,16 @@ 

    Usage

    opt_str_freeze

    -

    Summary

    +

    Summary

    opt_str_freeze pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_freeze does not dispatch any events.

    -

    Usage

    +

    Usage

    "hello".freeze
     
    @@ -1641,16 +1668,16 @@ 

    Usage

    opt_str_uminus

    -

    Summary

    +

    Summary

    opt_str_uminus pushes a frozen known string value with no interpolation onto the stack.

    -

    TracePoint

    +

    TracePoint

    opt_str_uminus does not dispatch any events.

    -

    Usage

    +

    Usage

    -"string"
     
    @@ -1661,17 +1688,17 @@ 

    Usage

    opt_succ

    -

    Summary

    +

    Summary

    opt_succ is a specialization of the opt_send_without_block instruction when the method being called is succ. Fast paths exist within CRuby when the receiver is either a String or a Fixnum.

    -

    TracePoint

    +

    TracePoint

    opt_succ can dispatch c_call and c_return events.

    -

    Usage

    +

    Usage

    "".succ
     
    @@ -1683,15 +1710,15 @@ 

    Usage

    pop

    -

    Summary

    +

    Summary

    pop pops the top value off the stack.

    -

    TracePoint

    +

    TracePoint

    pop does not dispatch any events.

    -

    Usage

    +

    Usage

    a ||= 2
     
    @@ -1710,15 +1737,15 @@ 

    Usage

    putnil

    -

    Summary

    +

    Summary

    putnil pushes a global nil object onto the stack.

    -

    TracePoint

    +

    TracePoint

    putnil can dispatch the line event.

    -

    Usage

    +

    Usage

    nil
     
    @@ -1729,15 +1756,15 @@ 

    Usage

    putobject

    -

    Summary

    +

    Summary

    putobject pushes a known value onto the stack.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    5
     
    @@ -1748,17 +1775,17 @@ 

    Usage

    putobject_int2fix_0

    -

    Summary

    +

    Summary

    putobject_INT2FIX_0_ pushes 0 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 0.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    0
     
    @@ -1769,17 +1796,17 @@ 

    Usage

    putobject_int2fix_1

    -

    Summary

    +

    Summary

    putobject_INT2FIX_1_ pushes 1 on the stack. It is a specialized instruction resulting from the operand unification optimization. It is the equivalent to putobject 1.

    -

    TracePoint

    +

    TracePoint

    putobject can dispatch the line event.

    -

    Usage

    +

    Usage

    1
     
    @@ -1790,15 +1817,15 @@ 

    Usage

    putself

    -

    Summary

    +

    Summary

    putself pushes the current value of self onto the stack.

    -

    TracePoint

    +

    TracePoint

    putself can dispatch the line event.

    -

    Usage

    +

    Usage

    puts "Hello, world!"
     
    @@ -1811,15 +1838,15 @@ 

    Usage

    putstring

    -

    Summary

    +

    Summary

    putstring pushes a string literal onto the stack.

    -

    TracePoint

    +

    TracePoint

    putstring can dispatch the line event.

    -

    Usage

    +

    Usage

    "foo"
     
    @@ -1830,15 +1857,15 @@ 

    Usage

    send

    -

    Summary

    +

    Summary

    send invokes a method with a block.

    -

    TracePoint

    +

    TracePoint

    send does not dispatch any events.

    -

    Usage

    +

    Usage

    "hello".tap { |i| p i }
     
    @@ -1880,18 +1907,18 @@ 

    Usage

    setlocal

    -

    Summary

    +

    Summary

    setlocal sets the value of a local variable on a frame determined by the level and index arguments. The level is the number of frames back to look and the index is the index in the local table. It pops the value it is setting off the stack.

    -

    TracePoint

    +

    TracePoint

    setlocal does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     tap { tap { value = 10 } }
    @@ -1919,17 +1946,17 @@ 

    Usage

    setlocal_wc_0

    -

    Summary

    +

    Summary

    setlocal_WC_0 is a specialized version of the setlocal instruction. It sets the value of a local variable on the current frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     
    @@ -1944,17 +1971,17 @@ 

    Usage

    setlocal_wc_1

    -

    Summary

    +

    Summary

    setlocal_WC_1 is a specialized version of the setlocal instruction. It sets the value of a local variable on the parent frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_1 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     self.then { value = 10 }
    @@ -1977,15 +2004,15 @@ 

    Usage

    setn

    -

    Summary

    +

    Summary

    setn is an instruction for set Nth stack entry to stack top

    -

    TracePoint

    +

    TracePoint

    # setn does not dispatch any events.

    -

    Usage

    +

    Usage

    {}[:key] = 'val'
     
    @@ -2002,15 +2029,15 @@ 

    Usage

    swap

    -

    Summary

    +

    Summary

    swap swaps the top two elements in the stack.

    -

    TracePoint

    +

    TracePoint

    swap does not dispatch any events.

    -

    Usage

    +

    Usage

    !!defined?([[]])
     
    @@ -2034,16 +2061,16 @@ 

    Usage

    topn

    -

    Summary

    +

    Summary

    topn has one argument: n. It gets the nth element from the top of the stack and pushes it on the stack.

    -

    TracePoint

    +

    TracePoint

    topn does not dispatch any events.

    -

    Usage

    +

    Usage

    case 3
     when 1..5
    @@ -2083,18 +2110,18 @@ 

    Usage

    toregexp

    -

    Summary

    +

    Summary

    toregexp is generated when string interpolation is used inside a regex literal //. It pops a defined number of values from the stack, combines them into a single string and coerces that string into a Regexp object, which it pushes back onto the stack

    -

    TracePoint

    +

    TracePoint

    toregexp cannot dispatch any TracePoint events.

    -

    Usage

    +

    Usage

    "/#{true}/"
     
    
    From 584df62ab1dbf8348fce68fdc59bbcc2522cdf93 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 26 Sep 2022 15:31:21 +0000
    Subject: [PATCH 62/63] deploy: 7fa7e52a852ddb742f3ab335f59ed70f962e3b62
    
    ---
     index.html | 47 ++++++++++++++++++++++++++++++++++++++---------
     1 file changed, 38 insertions(+), 9 deletions(-)
    
    diff --git a/index.html b/index.html
    index bde81aa..abe1154 100644
    --- a/index.html
    +++ b/index.html
    @@ -97,6 +97,7 @@ 

    YARV Instructions

    setlocal_wc_0 setlocal_wc_1 setn +splatarray swap topn toregexp @@ -2027,18 +2028,46 @@

    Usage

    # 0012 leave
    -

    swap

    +

    splatarray

    Summary

    -

    swap swaps the top two elements in the stack.

    +

    splatarray calls to_a on an array to splat.

    + +

    It coerces the array object at the top of the stack into Array by calling +to_a. It pushes a duplicate of the array if there is a flag, and the original +array, if there isn’t one.

    TracePoint

    -

    swap does not dispatch any events.

    +

    splayarray does not dispatch any events.

    Usage

    +
    x = *(5)
    +
    +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,8)> (catch: FALSE)
    +# local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1])
    +# [ 1] x@0
    +# 0000 putobject                              5                         (   1)[Li]
    +# 0002 splatarray                             true
    +# 0004 dup
    +# 0005 setlocal_WC_0                          x@0
    +# 0007 leave
    +
    + +

    swap

    + +

    Summary

    + +

    swap swaps the top two elements in the stack.

    + +

    TracePoint

    + +

    swap does not dispatch any events.

    + +

    Usage

    +
    !!defined?([[]])
     
     # == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,16)> (catch: TRUE)
    @@ -2061,16 +2090,16 @@ 

    Usage

    topn

    -

    Summary

    +

    Summary

    topn has one argument: n. It gets the nth element from the top of the stack and pushes it on the stack.

    -

    TracePoint

    +

    TracePoint

    topn does not dispatch any events.

    -

    Usage

    +

    Usage

    case 3
     when 1..5
    @@ -2110,18 +2139,18 @@ 

    Usage

    toregexp

    -

    Summary

    +

    Summary

    toregexp is generated when string interpolation is used inside a regex literal //. It pops a defined number of values from the stack, combines them into a single string and coerces that string into a Regexp object, which it pushes back onto the stack

    -

    TracePoint

    +

    TracePoint

    toregexp cannot dispatch any TracePoint events.

    -

    Usage

    +

    Usage

    "/#{true}/"
     
    
    From 7b2a425917118393f5830d9ebb4dfbbaaf14c969 Mon Sep 17 00:00:00 2001
    From: kddnewton 
    Date: Mon, 24 Oct 2022 13:19:52 +0000
    Subject: [PATCH 63/63] deploy: 0b2a5a31fe17748c9d1a3ad20b436d2df1f0433c
    
    ---
     index.html | 78 +++++++++++++++++++++++++++++++-----------------------
     1 file changed, 45 insertions(+), 33 deletions(-)
    
    diff --git a/index.html b/index.html
    index abe1154..e683385 100644
    --- a/index.html
    +++ b/index.html
    @@ -1882,22 +1882,34 @@ 

    Usage

    # 0001 getlocal_WC_0 i@0 # 0003 opt_send_without_block <calldata!mid:p, argc:1, FCALL|ARGS_SIMPLE> # 0005 leave [Br] -# ~~~ -## setglobal +# == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,23)> (catch: FALSE) +# 0000 putstring "hello" ( 1)[Li] +# 0002 send <calldata!mid:tap, argc:0>, block in <compiled> +# 0005 leave +# +# == disasm: #<ISeq:block in <compiled>@<compiled>:1 (1,12)-(1,23)> (catch: FALSE) +# local table (size: 1, argc: 1 [opts: 0, rest: -1, post: 0, block: -1, kw: -1@-1, kwrest: -1]) +# [ 1] i@0<Arg> +# 0000 putself ( 1)[LiBc] +# 0001 getlocal_WC_0 i@0 +# 0003 opt_send_without_block <calldata!mid:p, argc:1, FCALL|ARGS_SIMPLE> +# 0005 leave [Br] +
    -### Summary +

    setglobal

    -`setglobal` sets the value of a global variable. +

    Summary

    -### TracePoint +

    setglobal sets the value of a global variable.

    -`setglobal` does not dispatch any events. +

    TracePoint

    -### Usage +

    setglobal does not dispatch any events.

    -~~~ruby -$global = 5 +

    Usage

    + +
    $global = 5
     
     # == disasm: #<ISeq:<compiled>@<compiled>:1 (1,0)-(1,11)> (catch: FALSE)
     # 0000 putobject                              5                         (   1)[Li]
    @@ -1908,18 +1920,18 @@ 

    Usage

    setlocal

    -

    Summary

    +

    Summary

    setlocal sets the value of a local variable on a frame determined by the level and index arguments. The level is the number of frames back to look and the index is the index in the local table. It pops the value it is setting off the stack.

    -

    TracePoint

    +

    TracePoint

    setlocal does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     tap { tap { value = 10 } }
    @@ -1947,17 +1959,17 @@ 

    Usage

    setlocal_wc_0

    -

    Summary

    +

    Summary

    setlocal_WC_0 is a specialized version of the setlocal instruction. It sets the value of a local variable on the current frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_0 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     
    @@ -1972,17 +1984,17 @@ 

    Usage

    setlocal_wc_1

    -

    Summary

    +

    Summary

    setlocal_WC_1 is a specialized version of the setlocal instruction. It sets the value of a local variable on the parent frame to the value at the top of the stack as determined by the index given as its only argument.

    -

    TracePoint

    +

    TracePoint

    setlocal_WC_1 does not dispatch any events.

    -

    Usage

    +

    Usage

    value = 5
     self.then { value = 10 }
    @@ -2005,15 +2017,15 @@ 

    Usage

    setn

    -

    Summary

    +

    Summary

    setn is an instruction for set Nth stack entry to stack top

    -

    TracePoint

    +

    TracePoint

    # setn does not dispatch any events.

    -

    Usage

    +

    Usage

    {}[:key] = 'val'
     
    @@ -2030,7 +2042,7 @@ 

    Usage

    splatarray

    -

    Summary

    +

    Summary

    splatarray calls to_a on an array to splat.

    @@ -2038,11 +2050,11 @@

    Summary

    to_a. It pushes a duplicate of the array if there is a flag, and the original array, if there isn’t one.

    -

    TracePoint

    +

    TracePoint

    splayarray does not dispatch any events.

    -

    Usage

    +

    Usage

    x = *(5)
     
    @@ -2058,15 +2070,15 @@ 

    Usage

    swap

    -

    Summary

    +

    Summary

    swap swaps the top two elements in the stack.

    -

    TracePoint

    +

    TracePoint

    swap does not dispatch any events.

    -

    Usage

    +

    Usage

    !!defined?([[]])
     
    @@ -2090,16 +2102,16 @@ 

    Usage

    topn

    -

    Summary

    +

    Summary

    topn has one argument: n. It gets the nth element from the top of the stack and pushes it on the stack.

    -

    TracePoint

    +

    TracePoint

    topn does not dispatch any events.

    -

    Usage

    +

    Usage

    case 3
     when 1..5
    @@ -2139,18 +2151,18 @@ 

    Usage

    toregexp

    -

    Summary

    +

    Summary

    toregexp is generated when string interpolation is used inside a regex literal //. It pops a defined number of values from the stack, combines them into a single string and coerces that string into a Regexp object, which it pushes back onto the stack

    -

    TracePoint

    +

    TracePoint

    toregexp cannot dispatch any TracePoint events.

    -

    Usage

    +

    Usage

    "/#{true}/"