furnace-avm2 0.9.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. data/Gemfile.lock +2 -2
  2. data/bin/furnace-avm2 +5 -1
  3. data/bin/furnace-avm2-decompiler +80 -13
  4. data/bin/furnace-avm2-shell +32 -0
  5. data/furnace-avm2.gemspec +1 -1
  6. data/lib/furnace-avm2/abc.rb +1 -7
  7. data/lib/furnace-avm2/abc/metadata/file.rb +65 -0
  8. data/lib/furnace-avm2/abc/metadata/instance_info.rb +17 -11
  9. data/lib/furnace-avm2/abc/metadata/metadata_info.rb +14 -4
  10. data/lib/furnace-avm2/abc/metadata/method_body_info.rb +11 -3
  11. data/lib/furnace-avm2/abc/metadata/method_info.rb +3 -4
  12. data/lib/furnace-avm2/abc/metadata/multiname_kind_genericname.rb +3 -2
  13. data/lib/furnace-avm2/abc/metadata/multiname_kind_multiname.rb +11 -2
  14. data/lib/furnace-avm2/abc/metadata/multiname_kind_multinamel.rb +4 -0
  15. data/lib/furnace-avm2/abc/metadata/multiname_kind_qname.rb +10 -2
  16. data/lib/furnace-avm2/abc/metadata/multiname_kind_rtqname.rb +4 -0
  17. data/lib/furnace-avm2/abc/metadata/multiname_kind_rtqnamel.rb +4 -0
  18. data/lib/furnace-avm2/abc/metadata/script_info.rb +11 -7
  19. data/lib/furnace-avm2/abc/metadata/trait_class.rb +2 -2
  20. data/lib/furnace-avm2/abc/metadata/trait_info.rb +1 -1
  21. data/lib/furnace-avm2/abc/metadata/trait_method.rb +4 -3
  22. data/lib/furnace-avm2/abc/metadata/trait_slot.rb +2 -2
  23. data/lib/furnace-avm2/abc/opcodes/alchemy/alchemy_extend_1.rb +8 -0
  24. data/lib/furnace-avm2/abc/opcodes/alchemy/alchemy_extend_16.rb +8 -0
  25. data/lib/furnace-avm2/abc/opcodes/alchemy/alchemy_extend_8.rb +8 -0
  26. data/lib/furnace-avm2/abc/opcodes/alchemy/alchemy_load_float32.rb +8 -0
  27. data/lib/furnace-avm2/abc/opcodes/alchemy/alchemy_load_float64.rb +8 -0
  28. data/lib/furnace-avm2/abc/opcodes/alchemy/alchemy_load_int16.rb +8 -0
  29. data/lib/furnace-avm2/abc/opcodes/alchemy/alchemy_load_int32.rb +8 -0
  30. data/lib/furnace-avm2/abc/opcodes/alchemy/alchemy_load_int8.rb +8 -0
  31. data/lib/furnace-avm2/abc/opcodes/alchemy/alchemy_store_float32.rb +8 -0
  32. data/lib/furnace-avm2/abc/opcodes/alchemy/alchemy_store_float64.rb +8 -0
  33. data/lib/furnace-avm2/abc/opcodes/alchemy/alchemy_store_int16.rb +8 -0
  34. data/lib/furnace-avm2/abc/opcodes/alchemy/alchemy_store_int32.rb +8 -0
  35. data/lib/furnace-avm2/abc/opcodes/alchemy/alchemy_store_int8.rb +8 -0
  36. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_add.rb +1 -1
  37. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_add_i.rb +1 -1
  38. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_declocal.rb +1 -1
  39. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_declocal_i.rb +1 -1
  40. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_decrement.rb +1 -1
  41. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_decrement_i.rb +1 -1
  42. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_divide.rb +1 -1
  43. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_equals.rb +1 -1
  44. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_greaterequals.rb +1 -1
  45. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_greaterthan.rb +1 -1
  46. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_inclocal.rb +1 -1
  47. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_inclocal_i.rb +1 -1
  48. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_increment.rb +1 -1
  49. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_increment_i.rb +1 -1
  50. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_lessequals.rb +1 -1
  51. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_lessthan.rb +1 -1
  52. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_modulo.rb +1 -1
  53. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_multiply.rb +1 -1
  54. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_multiply_i.rb +1 -1
  55. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_negate.rb +1 -1
  56. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_negate_i.rb +1 -1
  57. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_not.rb +1 -1
  58. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_strictequals.rb +1 -1
  59. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_subtract.rb +1 -1
  60. data/lib/furnace-avm2/abc/opcodes/arithmetic/as3_subtract_i.rb +1 -1
  61. data/lib/furnace-avm2/abc/opcodes/bitwise/as3_bitand.rb +1 -1
  62. data/lib/furnace-avm2/abc/opcodes/bitwise/as3_bitnot.rb +1 -1
  63. data/lib/furnace-avm2/abc/opcodes/bitwise/as3_bitor.rb +1 -1
  64. data/lib/furnace-avm2/abc/opcodes/bitwise/as3_bitxor.rb +1 -1
  65. data/lib/furnace-avm2/abc/opcodes/bitwise/as3_lshift.rb +1 -1
  66. data/lib/furnace-avm2/abc/opcodes/bitwise/as3_rshift.rb +1 -1
  67. data/lib/furnace-avm2/abc/opcodes/bitwise/as3_urshift.rb +1 -1
  68. data/lib/furnace-avm2/abc/opcodes/control_transfer/as3_lookupswitch.rb +1 -1
  69. data/lib/furnace-avm2/abc/opcodes/control_transfer_opcode.rb +0 -4
  70. data/lib/furnace-avm2/abc/opcodes/exception/as3_newcatch.rb +1 -1
  71. data/lib/furnace-avm2/abc/opcodes/function_invocation/as3_callproplex.rb +4 -0
  72. data/lib/furnace-avm2/abc/opcodes/function_invocation_opcode.rb +4 -0
  73. data/lib/furnace-avm2/abc/opcodes/function_return/as3_returnvalue.rb +1 -1
  74. data/lib/furnace-avm2/abc/opcodes/function_return/as3_returnvoid.rb +1 -1
  75. data/lib/furnace-avm2/abc/opcodes/generic/as3_escxattr.rb +1 -1
  76. data/lib/furnace-avm2/abc/opcodes/generic/as3_escxelem.rb +8 -0
  77. data/lib/furnace-avm2/abc/opcodes/generic/as3_getlex.rb +4 -0
  78. data/lib/furnace-avm2/abc/opcodes/object_manipulation/as3_newfunction.rb +5 -1
  79. data/lib/furnace-avm2/abc/opcodes/property/as3_constructprop.rb +4 -0
  80. data/lib/furnace-avm2/abc/opcodes/property_opcode.rb +4 -0
  81. data/lib/furnace-avm2/abc/opcodes/push_literal/as3_pushuint.rb +11 -0
  82. data/lib/furnace-avm2/abc/opcodes/type_conversion/as3_applytype.rb +1 -1
  83. data/lib/furnace-avm2/abc/opcodes/type_conversion/as3_coerce.rb +5 -1
  84. data/lib/furnace-avm2/abc/opcodes/type_conversion/as3_coerce_a.rb +1 -1
  85. data/lib/furnace-avm2/abc/opcodes/type_conversion/as3_coerce_b.rb +1 -1
  86. data/lib/furnace-avm2/abc/opcodes/type_conversion/as3_coerce_s.rb +1 -1
  87. data/lib/furnace-avm2/abc/opcodes/type_conversion/as3_convert_d.rb +1 -1
  88. data/lib/furnace-avm2/abc/opcodes/type_conversion/as3_convert_i.rb +1 -1
  89. data/lib/furnace-avm2/abc/opcodes/type_conversion/as3_convert_o.rb +1 -1
  90. data/lib/furnace-avm2/abc/opcodes/type_conversion/as3_convert_s.rb +1 -1
  91. data/lib/furnace-avm2/abc/opcodes/type_conversion/as3_convert_u.rb +1 -1
  92. data/lib/furnace-avm2/abc/primitives/opcode_sequence.rb +35 -23
  93. data/lib/furnace-avm2/abc/primitives/record.rb +11 -0
  94. data/lib/furnace-avm2/binary/record.rb +9 -7
  95. data/lib/furnace-avm2/source/declaration_tokens/callee_token.rb +8 -5
  96. data/lib/furnace-avm2/source/declaration_tokens/class_implementations_token.rb +5 -1
  97. data/lib/furnace-avm2/source/declaration_tokens/class_specifiers_token.rb +2 -1
  98. data/lib/furnace-avm2/source/declaration_tokens/class_token.rb +5 -1
  99. data/lib/furnace-avm2/source/declaration_tokens/metadata_token.rb +25 -0
  100. data/lib/furnace-avm2/source/declaration_tokens/method_specifiers_token.rb +4 -3
  101. data/lib/furnace-avm2/source/declaration_tokens/method_token.rb +1 -0
  102. data/lib/furnace-avm2/source/declaration_tokens/multiname_token.rb +28 -13
  103. data/lib/furnace-avm2/source/declaration_tokens/package_token.rb +9 -8
  104. data/lib/furnace-avm2/source/declaration_tokens/scope_token.rb +2 -0
  105. data/lib/furnace-avm2/source/declaration_tokens/script_token.rb +4 -1
  106. data/lib/furnace-avm2/source/declaration_tokens/slot_token.rb +1 -0
  107. data/lib/furnace-avm2/source/declaration_tokens/specifiers_token.rb +11 -9
  108. data/lib/furnace-avm2/source/decompiler.rb +372 -101
  109. data/lib/furnace-avm2/source/implementation_tokens/closure_name_token.rb +7 -0
  110. data/lib/furnace-avm2/source/implementation_tokens/closure_token.rb +9 -0
  111. data/lib/furnace-avm2/source/implementation_tokens/instance_of_token.rb +9 -0
  112. data/lib/furnace-avm2/source/implementation_tokens/supplementary_comment_token.rb +16 -0
  113. data/lib/furnace-avm2/source/implementation_tokens/xml_literal_token.rb +14 -0
  114. data/lib/furnace-avm2/transform/ast_build.rb +3 -2
  115. data/lib/furnace-avm2/transform/ast_normalize.rb +39 -7
  116. data/lib/furnace-avm2/transform/cfg_build.rb +16 -6
  117. data/lib/furnace-avm2/transform/cfg_reduce.rb +4 -3
  118. data/lib/furnace-avm2/transform/nf_normalize.rb +15 -7
  119. data/lib/furnace-avm2/version.rb +1 -1
  120. data/test/basic.as +15 -0
  121. data/test/global.as +11 -0
  122. metadata +46 -29
  123. data/bin/furnace-avm2-benchmark +0 -38
  124. data/lib/furnace-avm2/abc/opcodes/arithmetic_opcode.rb +0 -4
  125. data/lib/furnace-avm2/abc/opcodes/bitwise_opcode.rb +0 -4
  126. data/lib/furnace-avm2/abc/opcodes/exception_opcode.rb +0 -4
  127. data/lib/furnace-avm2/abc/opcodes/function_return_opcode.rb +0 -4
  128. data/lib/furnace-avm2/abc/opcodes/object_manipulation_opcode.rb +0 -4
  129. data/lib/furnace-avm2/abc/opcodes/type_conversion_opcode.rb +0 -4
@@ -10,6 +10,10 @@ module Furnace::AVM2::ABC
10
10
  node = AST::Node.new(:m, [ ns_set.to_astlet, name ])
11
11
  end
12
12
 
13
+ def collect_ns(options)
14
+ # nothing
15
+ end
16
+
13
17
  def context_size
14
18
  1
15
19
  end
@@ -37,8 +37,16 @@ module Furnace::AVM2::ABC
37
37
  end
38
38
  end
39
39
 
40
- def collect_ns
41
- [ ns ]
40
+ def collect_ns(options)
41
+ return if options[:no_ns].include?(ns)
42
+
43
+ names = options[:names]
44
+ if names[name].nil?
45
+ options[:ns].add ns
46
+ names[name] = ns
47
+ elsif names[name] != ns
48
+ options[:no_ns].add ns
49
+ end
42
50
  end
43
51
 
44
52
  def context_size
@@ -10,6 +10,10 @@ module Furnace::AVM2::ABC
10
10
  node = AST::Node.new(:q, [ ns, name ])
11
11
  end
12
12
 
13
+ def collect_ns(options)
14
+ # nothing
15
+ end
16
+
13
17
  def context_size
14
18
  1
15
19
  end
@@ -4,6 +4,10 @@ module Furnace::AVM2::ABC
4
4
  "(rt)::(rt)"
5
5
  end
6
6
 
7
+ def collect_ns(options)
8
+ # nothing
9
+ end
10
+
7
11
  def context_size
8
12
  2
9
13
  end
@@ -1,23 +1,27 @@
1
1
  module Furnace::AVM2::ABC
2
2
  class ScriptInfo < Record
3
3
  include InitializerBody
4
+ include RecordWithTraits
4
5
 
5
6
  root_ref :initializer, :method
6
7
 
7
8
  abc_array_of :trait, :nested, :class => TraitInfo
8
9
 
9
10
  def collect_ns
10
- ns = []
11
- ns += initializer.collect_ns if initializer
12
- traits.each { |trait| ns += trait.collect_ns }
13
- ns
11
+ options = { ns: Set.new([ non_init_traits[0].name.ns ]), no_ns: Set.new, names: {} }
12
+
13
+ initializer.collect_ns(options) if initializer
14
+ traits.each { |trait| trait.collect_ns(options) }
15
+
16
+ options
14
17
  end
15
18
 
16
19
  def decompile(options={})
17
20
  Furnace::AVM2::Tokens::PackageToken.new(self,
18
- options.merge(ns: collect_ns,
19
- package_type: :script,
20
- package_name: non_init_traits[0].name))
21
+ options.merge(collect_ns).merge(
22
+ package_type: :script,
23
+ package_name: non_init_traits[0].name)
24
+ )
21
25
  end
22
26
 
23
27
  def any_code?
@@ -7,8 +7,8 @@ module Furnace::AVM2::ABC
7
7
  AST::Node.new(:class, [trait.name.to_astlet, klass.instance.name.to_astlet])
8
8
  end
9
9
 
10
- def collect_ns
11
- []
10
+ def collect_ns(options)
11
+ # dummy
12
12
  end
13
13
  end
14
14
  end
@@ -50,7 +50,7 @@ module Furnace::AVM2::ABC
50
50
  variant :Const, :nested, :class => TraitSlot
51
51
  end
52
52
 
53
- abc_array_of :metadata, :vuint30, :plural => :metadata, :if => :metadata?
53
+ root_array_of :metadata, :metadata, :plural => :metadata, :if => :metadata?
54
54
 
55
55
  def method_missing(method, *args, &block)
56
56
  data.send(method, *args, &block)
@@ -4,15 +4,16 @@ module Furnace::AVM2::ABC
4
4
  root_ref :method
5
5
 
6
6
  def body
7
- root.method_bodies.find { |body| body.method_idx == method_idx }
7
+ root.method_body_at(method_idx)
8
8
  end
9
9
 
10
10
  def to_astlet(trait)
11
11
  method.to_astlet(method_idx, trait.name.to_astlet)
12
12
  end
13
13
 
14
- def collect_ns
15
- method.collect_ns
14
+ def collect_ns(options)
15
+ method.collect_ns(options)
16
+ body.collect_ns(options) if body
16
17
  end
17
18
  end
18
19
  end
@@ -14,9 +14,9 @@ module Furnace::AVM2::ABC
14
14
  AST::Node.new(:slot, [ (trait.name ? trait.name.to_astlet : nil), (type ? type.to_astlet : nil), value, idx ])
15
15
  end
16
16
 
17
- def collect_ns
17
+ def collect_ns(options)
18
18
  if type
19
- type.collect_ns
19
+ type.collect_ns(options)
20
20
  else
21
21
  []
22
22
  end
@@ -0,0 +1,8 @@
1
+ module Furnace::AVM2::ABC
2
+ class AS3AlchemyExtend1 < Opcode
3
+ instruction 0x50
4
+
5
+ consume 1
6
+ produce 1
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Furnace::AVM2::ABC
2
+ class AS3AlchemyExtend16 < Opcode
3
+ instruction 0x52
4
+
5
+ consume 1
6
+ produce 1
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Furnace::AVM2::ABC
2
+ class AS3AlchemyExtend8 < Opcode
3
+ instruction 0x51
4
+
5
+ consume 1
6
+ produce 1
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Furnace::AVM2::ABC
2
+ class AS3AlchemyLoadFloat32 < Opcode
3
+ instruction 0x3d
4
+
5
+ consume 1
6
+ produce 1
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Furnace::AVM2::ABC
2
+ class AS3AlchemyLoadFloat64 < Opcode
3
+ instruction 0x3e
4
+
5
+ consume 1
6
+ produce 1
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Furnace::AVM2::ABC
2
+ class AS3AlchemyLoadInt16 < Opcode
3
+ instruction 0x3b
4
+
5
+ consume 1
6
+ produce 1
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Furnace::AVM2::ABC
2
+ class AS3AlchemyLoadInt32 < Opcode
3
+ instruction 0x3c
4
+
5
+ consume 1
6
+ produce 1
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Furnace::AVM2::ABC
2
+ class AS3AlchemyLoadInt8 < Opcode
3
+ instruction 0x3a
4
+
5
+ consume 1
6
+ produce 1
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Furnace::AVM2::ABC
2
+ class AS3AlchemyStoreFloat32 < Opcode
3
+ instruction 0x38
4
+
5
+ consume 2
6
+ produce 0
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Furnace::AVM2::ABC
2
+ class AS3AlchemyStoreFloat64 < Opcode
3
+ instruction 0x39
4
+
5
+ consume 2
6
+ produce 0
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Furnace::AVM2::ABC
2
+ class AS3AlchemyStoreInt16 < Opcode
3
+ instruction 0x36
4
+
5
+ consume 2
6
+ produce 0
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Furnace::AVM2::ABC
2
+ class AS3AlchemyStoreInt32 < Opcode
3
+ instruction 0x37
4
+
5
+ consume 2
6
+ produce 0
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ module Furnace::AVM2::ABC
2
+ class AS3AlchemyStoreInt8 < Opcode
3
+ instruction 0x35
4
+
5
+ consume 2
6
+ produce 0
7
+ end
8
+ end
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3Add < ArithmeticOpcode
2
+ class AS3Add < Opcode
3
3
  instruction 0xa0
4
4
 
5
5
  consume 2
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3AddI < ArithmeticOpcode
2
+ class AS3AddI < Opcode
3
3
  instruction 0xc5
4
4
 
5
5
  consume 2
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3DecLocal < ArithmeticOpcode
2
+ class AS3DecLocal < Opcode
3
3
  instruction 0x94
4
4
 
5
5
  body do
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3DecLocalI < ArithmeticOpcode
2
+ class AS3DecLocalI < Opcode
3
3
  instruction 0xc3
4
4
 
5
5
  body do
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3Decrement < ArithmeticOpcode
2
+ class AS3Decrement < Opcode
3
3
  instruction 0x93
4
4
 
5
5
  consume 1
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3DecrementI < ArithmeticOpcode
2
+ class AS3DecrementI < Opcode
3
3
  instruction 0xc1
4
4
 
5
5
  consume 1
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3Divide < ArithmeticOpcode
2
+ class AS3Divide < Opcode
3
3
  instruction 0xa3
4
4
 
5
5
  consume 2
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3Equals < ArithmeticOpcode
2
+ class AS3Equals < Opcode
3
3
  instruction 0xab
4
4
  ast_type :==
5
5
 
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3GreaterEquals < ArithmeticOpcode
2
+ class AS3GreaterEquals < Opcode
3
3
  instruction 0xb0
4
4
  ast_type :>=
5
5
 
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3GreaterThan < ArithmeticOpcode
2
+ class AS3GreaterThan < Opcode
3
3
  instruction 0xaf
4
4
  ast_type :>
5
5
 
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3IncLocal < ArithmeticOpcode
2
+ class AS3IncLocal < Opcode
3
3
  instruction 0x92
4
4
 
5
5
  body do
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3IncLocalI < ArithmeticOpcode
2
+ class AS3IncLocalI < Opcode
3
3
  instruction 0xc2
4
4
 
5
5
  body do
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3Increment < ArithmeticOpcode
2
+ class AS3Increment < Opcode
3
3
  instruction 0x91
4
4
 
5
5
  consume 1
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3IncrementI < ArithmeticOpcode
2
+ class AS3IncrementI < Opcode
3
3
  instruction 0xc0
4
4
 
5
5
  consume 1
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3LessEquals < ArithmeticOpcode
2
+ class AS3LessEquals < Opcode
3
3
  instruction 0xae
4
4
  ast_type :<=
5
5
 
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3LessThan < ArithmeticOpcode
2
+ class AS3LessThan < Opcode
3
3
  instruction 0xad
4
4
  ast_type :<
5
5
 
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3Modulo < ArithmeticOpcode
2
+ class AS3Modulo < Opcode
3
3
  instruction 0xa4
4
4
 
5
5
  consume 2
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3Multiply < ArithmeticOpcode
2
+ class AS3Multiply < Opcode
3
3
  instruction 0xa2
4
4
 
5
5
  consume 2
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3MultiplyI < ArithmeticOpcode
2
+ class AS3MultiplyI < Opcode
3
3
  instruction 0xc7
4
4
 
5
5
  consume 2
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3Negate < ArithmeticOpcode
2
+ class AS3Negate < Opcode
3
3
  instruction 0x90
4
4
 
5
5
  consume 1
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3NegateI < ArithmeticOpcode
2
+ class AS3NegateI < Opcode
3
3
  instruction 0xc4
4
4
 
5
5
  consume 1
@@ -1,5 +1,5 @@
1
1
  module Furnace::AVM2::ABC
2
- class AS3Not < ArithmeticOpcode
2
+ class AS3Not < Opcode
3
3
  instruction 0x96
4
4
  ast_type :!
5
5