rubinius-compiler 3.25 → 3.26

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 42b3c05bfee442800bfcacc8019395d34f00ab1f
4
- data.tar.gz: fdab2f69bbd52b8430c51a6f66d9fe5518fd2375
3
+ metadata.gz: 4a6beb07321b5fa2a724d03f66d8626ffc7fe694
4
+ data.tar.gz: e98a2577a4d11d718f4c3e10cec1e9a1e7ef292a
5
5
  SHA512:
6
- metadata.gz: 5f2c4eeebecdf4c6b771e1038c283121326b59f67f4abe0757d4af5ded0fd64b7027a378ca1903ad1d7713670055d449bb7aeb3d54036a3c4b375619b356ec04
7
- data.tar.gz: 951af355701f6a144aaebe161b358e894774a3488e37fe51d3b4c288d87200d966d3cc6eb0b23f70946eba9800b786f4b4a74c4d2f0e1ea96a99124573c3065b
6
+ metadata.gz: 41ce3227f9f7a0045f2d426e73ee7ac088f769fcfaf618720ffce29ceaf20fc69ec8d823b97502a2dc58663bb1474f47b045a0cdad2dc72547ae87fd4492e4e4
7
+ data.tar.gz: 247b4d7696a7777fa484a55e286ce6ed75660ee164cf37eb83b38c1575c1c372c1cb502d575bbc76839abf3e6963586977daa2a904a3522db259f29fb9e8c1cf
@@ -274,6 +274,7 @@ module CodeTools
274
274
  @keywords = nil
275
275
  @kwrest_index = nil
276
276
  @local_count = 0
277
+ @registers = 0
277
278
 
278
279
  @state = []
279
280
  @generators = []
@@ -452,6 +453,10 @@ module CodeTools
452
453
  Label.new(self)
453
454
  end
454
455
 
456
+ def new_register
457
+ (@registers += 1) - 1
458
+ end
459
+
455
460
  # Helpers
456
461
 
457
462
  def new_basic_block
@@ -810,6 +810,7 @@ module CodeTools
810
810
  @instruction = 98
811
811
  end
812
812
 
813
+ # Parsing Expression Grammar instructions
813
814
  def p_any(arg1)
814
815
  @stream << 99 << arg1
815
816
  @ip += 2
@@ -918,6 +919,7 @@ module CodeTools
918
919
  @instruction = 116
919
920
  end
920
921
 
922
+ # Instrumentation instructions
921
923
  def m_bytes(arg1, arg2)
922
924
  @stream << 117 << arg1 << arg2
923
925
  @ip += 3
@@ -959,5 +961,178 @@ module CodeTools
959
961
  @ip += 3
960
962
  @instruction = 123
961
963
  end
964
+
965
+ # Branching instructions
966
+ def b_if_serial(arg1, arg2, arg3)
967
+ @stream << 124 << arg1 << arg2 << arg3
968
+ @ip += 4
969
+ @instruction = 124
970
+ end
971
+
972
+ def b_if_int(arg1, arg2, arg3)
973
+ @stream << 125 << arg1 << arg2 << arg3
974
+ @ip += 4
975
+ @instruction = 125
976
+ end
977
+
978
+ def b_if(arg1, arg2)
979
+ @stream << 126 << arg1 << arg2
980
+ @ip += 3
981
+ @instruction = 126
982
+ end
983
+
984
+ # Register movement instructions
985
+ def r_load_local(arg1, arg2)
986
+ @stream << 127 << arg1 << arg2
987
+ @ip += 3
988
+ @instructions = 127
989
+ end
990
+
991
+ def r_store_local(arg1, arg2)
992
+ @stream << 128 << arg1 << arg2
993
+ @ip += 3
994
+ @instructions = 128
995
+ end
996
+
997
+ def r_load_local_depth(arg1, arg2, arg3)
998
+ @stream << 129 << arg1 << arg2 << arg3
999
+ @ip += 4
1000
+ @instructions = 129
1001
+ end
1002
+
1003
+ def r_store_local_depth(arg1, arg2, arg3)
1004
+ @stream << 130 << arg1 << arg2 << arg3
1005
+ @ip += 4
1006
+ @instructions = 130
1007
+ end
1008
+
1009
+ def r_load_stack(arg1)
1010
+ @stream << 131 << arg1
1011
+ @ip += 2
1012
+ @instructions = 131
1013
+ end
1014
+
1015
+ def r_store_stack(arg1)
1016
+ @stream << 132 << arg1
1017
+ @ip += 2
1018
+ @current_block.add_stack(0, 1)
1019
+ @instructions = 132
1020
+ end
1021
+
1022
+ def r_load_literal(arg1, arg2)
1023
+ @stream << 133 << arg1 << arg2
1024
+ @ip += 3
1025
+ @instruction = 133
1026
+ end
1027
+
1028
+ def r_load_int(arg1, arg2)
1029
+ @stream << 134 << arg1 << arg2
1030
+ @ip += 3
1031
+ @instruction = 134
1032
+ end
1033
+
1034
+ def r_store_int(arg1, arg2)
1035
+ @stream << 135 << arg1 << arg2
1036
+ @ip += 3
1037
+ @instruction = 135
1038
+ end
1039
+
1040
+ def r_copy(arg1, arg2)
1041
+ @stream << 136 << arg1 << arg2
1042
+ @ip += 3
1043
+ @instruction = 136
1044
+ end
1045
+
1046
+ # Native signed integer instructions
1047
+ def n_iadd(arg1, arg2, arg3)
1048
+ @stream << 137 << arg1 << arg2 << arg3
1049
+ @ip += 4
1050
+ @instruction = 137
1051
+ end
1052
+
1053
+ def n_isub(arg1, arg2, arg3)
1054
+ @stream << 138 << arg1 << arg2 << arg3
1055
+ @ip += 4
1056
+ @instruction = 138
1057
+ end
1058
+
1059
+ def n_imul(arg1, arg2, arg3)
1060
+ @stream << 139 << arg1 << arg2 << arg3
1061
+ @ip += 4
1062
+ @instruction = 139
1063
+ end
1064
+
1065
+ def n_idiv(arg1, arg2, arg3)
1066
+ @stream << 140 << arg1 << arg2 << arg3
1067
+ @ip += 4
1068
+ @instruction = 140
1069
+ end
1070
+
1071
+ def n_iadd_o(arg1, arg2, arg3)
1072
+ @stream << 141 << arg1 << arg2 << arg3
1073
+ @ip += 4
1074
+ @instruction = 141
1075
+ end
1076
+
1077
+ def n_isub_o(arg1, arg2, arg3)
1078
+ @stream << 142 << arg1 << arg2 << arg3
1079
+ @ip += 4
1080
+ @instruction = 142
1081
+ end
1082
+
1083
+ def n_imul_o(arg1, arg2, arg3)
1084
+ @stream << 143 << arg1 << arg2 << arg3
1085
+ @ip += 4
1086
+ @instruction = 143
1087
+ end
1088
+
1089
+ def n_idiv_o(arg1, arg2, arg3)
1090
+ @stream << 144 << arg1 << arg2 << arg3
1091
+ @ip += 4
1092
+ @instruction = 144
1093
+ end
1094
+
1095
+ def n_ieq(arg1, arg2, arg3)
1096
+ @stream << 145 << arg1 << arg2 << arg3
1097
+ @ip += 4
1098
+ @instruction = 145
1099
+ end
1100
+
1101
+ def n_ine(arg1, arg2, arg3)
1102
+ @stream << 146 << arg1 << arg2 << arg3
1103
+ @ip += 4
1104
+ @instruction = 146
1105
+ end
1106
+
1107
+ def n_ilt(arg1, arg2, arg3)
1108
+ @stream << 147 << arg1 << arg2 << arg3
1109
+ @ip += 4
1110
+ @instruction = 147
1111
+ end
1112
+
1113
+ def n_ile(arg1, arg2, arg3)
1114
+ @stream << 148 << arg1 << arg2 << arg3
1115
+ @ip += 4
1116
+ @instruction = 148
1117
+ end
1118
+
1119
+ def n_igt(arg1, arg2, arg3)
1120
+ @stream << 149 << arg1 << arg2 << arg3
1121
+ @ip += 4
1122
+ @instruction = 149
1123
+ end
1124
+
1125
+ def n_ige(arg1, arg2, arg3)
1126
+ @stream << 150 << arg1 << arg2 << arg3
1127
+ @ip += 4
1128
+ @instruction = 150
1129
+ end
1130
+
1131
+ def n_ipopcnt(arg1, arg2)
1132
+ @stream << 151 << arg1 << arg2
1133
+ @ip += 3
1134
+ @instruction = 151
1135
+ end
1136
+
962
1137
  end
963
1138
  end
@@ -104,6 +104,8 @@ module Rubinius
104
104
  opcode 96, :yield_stack, :stack => [[0,1], 1], :args => [:count], :control_flow => :yield
105
105
  opcode 97, :zsuper, :stack => [1, 1], :args => [:literal], :control_flow => :next
106
106
  opcode 98, :push_file, :stack => [0, 1], :args => [], :control_flow => :next
107
+
108
+ # Parsing Expression Grammar instructions
107
109
  opcode 99, :p_any, :stack => [0, 0], :args => [:r0], :control_flow => :next
108
110
  opcode 100, :p_call, :stack => [0, 0], :args => [:ip], :control_flow => :next
109
111
  opcode 101, :p_char, :stack => [0, 0], :args => [:chr], :control_flow => :next
@@ -122,6 +124,8 @@ module Rubinius
122
124
  opcode 114, :p_test_char, :stack => [0, 0], :args => [:chr, :ip], :control_flow => :next
123
125
  opcode 115, :p_test_char_set, :stack => [0, 0], :args => [:chr_set, :ip], :control_flow => :next
124
126
  opcode 116, :p_init, :stack => [0, 0], :args => [:r0, :r1], :control_flow => :next
127
+
128
+ # Instrumentation instructions
125
129
  opcode 117, :m_bytes, :stack => [0, 0], :args => [:value, :r0], :control_flow => :next
126
130
  opcode 118, :m_counter, :stack => [0, 0], :args => [:value], :control_flow => :next
127
131
  opcode 119, :m_sum, :stack => [0, 0], :args => [:value, :r0], :control_flow => :next
@@ -129,5 +133,40 @@ module Rubinius
129
133
  opcode 121, :m_time_stamp, :stack => [0, 0], :args => [:value, :flag], :control_flow => :next
130
134
  opcode 122, :m_timer_start, :stack => [0, 0], :args => [:timer], :control_flow => :next
131
135
  opcode 123, :m_timer_stop, :stack => [0, 0], :args => [:ip, :flag], :control_flow => :next
136
+
137
+ # Branching instructions
138
+ opcode 124, :b_if_serial, :stack => [0, 0], :args => [:r0, :r1, :ip], :control_flow => :branch
139
+ opcode 125, :b_if_int, :stack => [0, 0], :args => [:r0, :r1, :ip], :control_flow => :branch
140
+ opcode 126, :b_if, :stack => [0, 0], :args => [:r0, :ip], :control_flow => :branch
141
+
142
+ # Register movement instructions
143
+ opcode 127, :r_load_local, :stack => [0, 0], :args => [:r0, :local], :control_flow => :next
144
+ opcode 128, :r_store_local, :stack => [0, 0], :args => [:r0, :local], :control_flow => :next
145
+ opcode 129, :r_load_local_depth, :stack => [0, 0], :args => [:r0, :local, :depth], :control_flow => :next
146
+ opcode 130, :r_store_local_depth, :stack => [0, 0], :args => [:r0, :local, :depth], :control_flow => :next
147
+ opcode 131, :r_load_stack, :stack => [0, 0], :args => [:r0], :control_flow => :next
148
+ opcode 132, :r_store_stack, :stack => [0, 1], :args => [:r0], :control_flow => :next
149
+ opcode 133, :r_load_literal, :stack => [0, 0], :args => [:r0, :literal], :control_flow => :next
150
+ opcode 134, :r_load_int, :stack => [0, 0], :args => [:r0, :r1], :control_flow => :next
151
+ opcode 135, :r_store_int, :stack => [0, 0], :args => [:r0, :r1], :control_flow => :next
152
+ opcode 136, :r_copy, :stack => [0, 0], :args => [:r0, :r1], :control_flow => :next
153
+
154
+ # Native signed integer instructions
155
+ opcode 137, :n_iadd, :stack => [0, 0], :args => [:r0, :r1, :r2], :control_flow => :next
156
+ opcode 138, :n_isub, :stack => [0, 0], :args => [:r0, :r1, :r2], :control_flow => :next
157
+ opcode 139, :n_imul, :stack => [0, 0], :args => [:r0, :r1, :r2], :control_flow => :next
158
+ opcode 140, :n_idiv, :stack => [0, 0], :args => [:r0, :r1, :r2], :control_flow => :next
159
+ opcode 141, :n_iadd_o, :stack => [0, 0], :args => [:r0, :r1, :r2], :control_flow => :next
160
+ opcode 142, :n_isub_o, :stack => [0, 0], :args => [:r0, :r1, :r2], :control_flow => :next
161
+ opcode 143, :n_imul_o, :stack => [0, 0], :args => [:r0, :r1, :r2], :control_flow => :next
162
+ opcode 144, :n_idiv_o, :stack => [0, 0], :args => [:r0, :r1, :r2], :control_flow => :next
163
+ opcode 145, :n_ieq, :stack => [0, 0], :args => [:r0, :r1, :r2], :control_flow => :next
164
+ opcode 146, :n_ine, :stack => [0, 0], :args => [:r0, :r1, :r2], :control_flow => :next
165
+ opcode 147, :n_ilt, :stack => [0, 0], :args => [:r0, :r1, :r2], :control_flow => :next
166
+ opcode 148, :n_ile, :stack => [0, 0], :args => [:r0, :r1, :r2], :control_flow => :next
167
+ opcode 149, :n_igt, :stack => [0, 0], :args => [:r0, :r1, :r2], :control_flow => :next
168
+ opcode 150, :n_ige, :stack => [0, 0], :args => [:r0, :r1, :r2], :control_flow => :next
169
+ opcode 151, :n_ipopcnt, :stack => [0, 0], :args => [:r0, :r1], :control_flow => :next
170
+
132
171
  end
133
172
  end
@@ -1,5 +1,5 @@
1
1
  module CodeTools
2
2
  class Compiler
3
- VERSION = "3.25"
3
+ VERSION = "3.26"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubinius-compiler
3
3
  version: !ruby/object:Gem::Version
4
- version: '3.25'
4
+ version: '3.26'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Shirai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-05 00:00:00.000000000 Z
11
+ date: 2018-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler