furnace-avm2 0.0.9 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -1
- data/Gemfile.lock +4 -3
- data/LICENSE +20 -0
- data/bin/furnace-avm2 +36 -6
- data/bin/furnace-avm2-decompiler +141 -0
- data/furnace-avm2.gemspec +2 -2
- data/lib/furnace-avm2.rb +1 -0
- data/lib/furnace-avm2/abc.rb +24 -7
- data/lib/furnace-avm2/abc/metadata/{option_detail.rb → default_value.rb} +5 -1
- data/lib/furnace-avm2/abc/metadata/initializer_body.rb +8 -0
- data/lib/furnace-avm2/abc/metadata/instance_info.rb +19 -4
- data/lib/furnace-avm2/abc/metadata/klass_info.rb +1 -4
- data/lib/furnace-avm2/abc/metadata/method_body_info.rb +27 -10
- data/lib/furnace-avm2/abc/metadata/method_info.rb +20 -13
- data/lib/furnace-avm2/abc/metadata/multiname_info.rb +6 -0
- data/lib/furnace-avm2/abc/metadata/multiname_kind_genericname.rb +8 -5
- data/lib/furnace-avm2/abc/metadata/multiname_kind_multiname.rb +4 -0
- data/lib/furnace-avm2/abc/metadata/multiname_kind_qname.rb +5 -1
- data/lib/furnace-avm2/abc/metadata/record_with_value.rb +90 -0
- data/lib/furnace-avm2/abc/metadata/script_info.rb +25 -1
- data/lib/furnace-avm2/abc/metadata/trait_class.rb +7 -3
- data/lib/furnace-avm2/abc/metadata/trait_info.rb +8 -4
- data/lib/furnace-avm2/abc/metadata/trait_method.rb +4 -0
- data/lib/furnace-avm2/abc/metadata/trait_slot.rb +5 -51
- data/lib/furnace-avm2/abc/opcodes/bitwise/as3_lshift.rb +1 -1
- data/lib/furnace-avm2/abc/opcodes/bitwise/as3_rshift.rb +1 -1
- data/lib/furnace-avm2/abc/opcodes/bitwise/as3_urshift.rb +1 -1
- data/lib/furnace-avm2/abc/opcodes/debug/as3_debug.rb +15 -0
- data/lib/furnace-avm2/abc/opcodes/debug/as3_debugfile.rb +12 -0
- data/lib/furnace-avm2/abc/opcodes/debug/as3_debugline.rb +12 -0
- data/lib/furnace-avm2/abc/opcodes/function_invocation/as3_callproplex.rb +21 -0
- data/lib/furnace-avm2/abc/opcodes/push_literal/as3_pushbyte.rb +1 -1
- data/lib/furnace-avm2/abc/opcodes/push_literal/as3_pushshort.rb +1 -1
- data/lib/furnace-avm2/binary/record.rb +21 -1
- data/lib/furnace-avm2/source/declaration_tokens/argument_declaration_token.rb +4 -0
- data/lib/furnace-avm2/source/declaration_tokens/arguments_token.rb +15 -0
- data/lib/furnace-avm2/source/declaration_tokens/callee_token.rb +72 -0
- data/lib/furnace-avm2/source/declaration_tokens/class_implementations_token.rb +21 -0
- data/lib/furnace-avm2/source/declaration_tokens/class_inheritance_token.rb +17 -0
- data/lib/furnace-avm2/source/declaration_tokens/class_name_token.rb +21 -0
- data/lib/furnace-avm2/source/declaration_tokens/class_specifiers_token.rb +12 -0
- data/lib/furnace-avm2/source/declaration_tokens/class_token.rb +21 -0
- data/lib/furnace-avm2/source/declaration_tokens/comment_token.rb +22 -0
- data/lib/furnace-avm2/source/declaration_tokens/constructor_specifiers_token.rb +12 -0
- data/lib/furnace-avm2/source/declaration_tokens/constructor_token.rb +15 -0
- data/lib/furnace-avm2/source/declaration_tokens/function_name_token.rb +14 -0
- data/lib/furnace-avm2/source/declaration_tokens/import_token.rb +17 -0
- data/lib/furnace-avm2/source/declaration_tokens/initialization_token.rb +7 -0
- data/lib/furnace-avm2/source/declaration_tokens/method_specifiers_token.rb +13 -0
- data/lib/furnace-avm2/source/declaration_tokens/method_token.rb +15 -0
- data/lib/furnace-avm2/source/declaration_tokens/multiname_token.rb +41 -0
- data/lib/furnace-avm2/source/declaration_tokens/namespace_name_token.rb +16 -0
- data/lib/furnace-avm2/source/declaration_tokens/package_name_token.rb +17 -0
- data/lib/furnace-avm2/source/declaration_tokens/package_token.rb +29 -0
- data/lib/furnace-avm2/source/declaration_tokens/rest_argument_token.rb +12 -0
- data/lib/furnace-avm2/source/declaration_tokens/scope_token.rb +23 -0
- data/lib/furnace-avm2/source/declaration_tokens/script_token.rb +14 -0
- data/lib/furnace-avm2/source/declaration_tokens/slot_name_token.rb +17 -0
- data/lib/furnace-avm2/source/declaration_tokens/slot_token.rb +23 -0
- data/lib/furnace-avm2/source/declaration_tokens/specifiers_token.rb +32 -0
- data/lib/furnace-avm2/source/declaration_tokens/token_with_traits.rb +51 -0
- data/lib/furnace-avm2/source/declaration_tokens/type_token.rb +7 -0
- data/lib/furnace-avm2/source/decompiler.rb +669 -0
- data/lib/furnace-avm2/source/implementation_tokens/access_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/array_token.rb +17 -0
- data/lib/furnace-avm2/source/implementation_tokens/as_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/assignment_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/binary_operator_token.rb +14 -0
- data/lib/furnace-avm2/source/implementation_tokens/break_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/call_token.rb +5 -0
- data/lib/furnace-avm2/source/implementation_tokens/continue_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/control_flow_token.rb +26 -0
- data/lib/furnace-avm2/source/implementation_tokens/control_transfer_token.rb +20 -0
- data/lib/furnace-avm2/source/implementation_tokens/delete_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/do_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/else_if_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/else_token.rb +22 -0
- data/lib/furnace-avm2/source/implementation_tokens/for_each_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/for_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/generic_specializers_token.rb +17 -0
- data/lib/furnace-avm2/source/implementation_tokens/generic_type_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/if_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/immediate_token.rb +14 -0
- data/lib/furnace-avm2/source/implementation_tokens/immediate_typename_token.rb +14 -0
- data/lib/furnace-avm2/source/implementation_tokens/in_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/index_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/is_complex.rb +7 -0
- data/lib/furnace-avm2/source/implementation_tokens/is_simple.rb +7 -0
- data/lib/furnace-avm2/source/implementation_tokens/is_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/label_declaration_token.rb +12 -0
- data/lib/furnace-avm2/source/implementation_tokens/label_token.rb +12 -0
- data/lib/furnace-avm2/source/implementation_tokens/local_variable_token.rb +7 -0
- data/lib/furnace-avm2/source/implementation_tokens/new_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/object_pair_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/object_token.rb +17 -0
- data/lib/furnace-avm2/source/implementation_tokens/parentheses_token.rb +11 -0
- data/lib/furnace-avm2/source/implementation_tokens/property_name_token.rb +14 -0
- data/lib/furnace-avm2/source/implementation_tokens/return_token.rb +16 -0
- data/lib/furnace-avm2/source/implementation_tokens/rtname_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/statement_token.rb +8 -0
- data/lib/furnace-avm2/source/implementation_tokens/super_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/switch_token.rb +9 -0
- data/lib/furnace-avm2/source/implementation_tokens/ternary_operator_token.rb +13 -0
- data/lib/furnace-avm2/source/implementation_tokens/throw_token.rb +12 -0
- data/lib/furnace-avm2/source/implementation_tokens/typeof_token.rb +13 -0
- data/lib/furnace-avm2/source/implementation_tokens/unary_operator_token.rb +14 -0
- data/lib/furnace-avm2/source/implementation_tokens/unary_post_operator_token.rb +14 -0
- data/lib/furnace-avm2/source/implementation_tokens/variable_name_token.rb +14 -0
- data/lib/furnace-avm2/source/implementation_tokens/while_token.rb +9 -0
- data/lib/furnace-avm2/transform.rb +5 -1
- data/lib/furnace-avm2/transform/ast_build.rb +22 -7
- data/lib/furnace-avm2/transform/ast_normalize.rb +61 -20
- data/lib/furnace-avm2/transform/cfg_build.rb +86 -0
- data/lib/furnace-avm2/transform/cfg_reduce.rb +249 -0
- data/lib/furnace-avm2/transform/nf_normalize.rb +130 -0
- data/lib/furnace-avm2/version.rb +4 -2
- data/test/basic.as +239 -0
- metadata +110 -38
- data/lib/furnace-avm2/abc/metadata/option_info.rb +0 -5
- data/test/exception.as +0 -29
- data/test/literal.as +0 -5
- data/test/logic.as +0 -23
- data/test/loops.as +0 -30
- data/test/number.as +0 -14
- data/test/switch.as +0 -38
- data/test/ternary.as +0 -22
metadata
CHANGED
@@ -1,61 +1,65 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: furnace-avm2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
4
|
+
prerelease:
|
5
|
+
version: 0.9.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Peter Zotov
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-04-11 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: furnace
|
16
|
-
|
17
|
-
none: false
|
16
|
+
version_requirements: &2056 !ruby/object:Gem::Requirement
|
18
17
|
requirements:
|
19
18
|
- - ! '>='
|
20
19
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.0
|
22
|
-
|
20
|
+
version: 0.1.0
|
21
|
+
none: false
|
22
|
+
requirement: *2056
|
23
23
|
prerelease: false
|
24
|
-
|
24
|
+
type: :runtime
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: trollop
|
27
|
-
|
28
|
-
none: false
|
27
|
+
version_requirements: &2074 !ruby/object:Gem::Requirement
|
29
28
|
requirements:
|
30
29
|
- - ! '>='
|
31
30
|
- !ruby/object:Gem::Version
|
32
31
|
version: '0'
|
33
|
-
|
32
|
+
none: false
|
33
|
+
requirement: *2074
|
34
34
|
prerelease: false
|
35
|
-
|
36
|
-
description: furnace-avm2 allows one to load, modify and write back Flash ActionScript3
|
37
|
-
bytecode. It can also decompile it.
|
35
|
+
type: :runtime
|
36
|
+
description: furnace-avm2 allows one to load, modify and write back Flash ActionScript3 bytecode. It can also decompile it.
|
38
37
|
email:
|
39
38
|
- whitequark@whitequark.org
|
40
39
|
executables:
|
41
40
|
- furnace-avm2
|
42
41
|
- furnace-avm2-benchmark
|
42
|
+
- furnace-avm2-decompiler
|
43
43
|
extensions: []
|
44
44
|
extra_rdoc_files: []
|
45
45
|
files:
|
46
46
|
- .gitignore
|
47
47
|
- Gemfile
|
48
48
|
- Gemfile.lock
|
49
|
+
- LICENSE
|
49
50
|
- Rakefile
|
50
51
|
- abcdump.abc
|
51
52
|
- bin/furnace-avm2
|
52
53
|
- bin/furnace-avm2-benchmark
|
54
|
+
- bin/furnace-avm2-decompiler
|
53
55
|
- furnace-avm2.gemspec
|
54
56
|
- lib/furnace-avm2.rb
|
55
57
|
- lib/furnace-avm2/abc.rb
|
56
58
|
- lib/furnace-avm2/abc/metadata/const_pool_info.rb
|
59
|
+
- lib/furnace-avm2/abc/metadata/default_value.rb
|
57
60
|
- lib/furnace-avm2/abc/metadata/exception_info.rb
|
58
61
|
- lib/furnace-avm2/abc/metadata/file.rb
|
62
|
+
- lib/furnace-avm2/abc/metadata/initializer_body.rb
|
59
63
|
- lib/furnace-avm2/abc/metadata/instance_info.rb
|
60
64
|
- lib/furnace-avm2/abc/metadata/klass_info.rb
|
61
65
|
- lib/furnace-avm2/abc/metadata/metadata_info.rb
|
@@ -70,9 +74,8 @@ files:
|
|
70
74
|
- lib/furnace-avm2/abc/metadata/multiname_kind_rtqnamel.rb
|
71
75
|
- lib/furnace-avm2/abc/metadata/namespace_info.rb
|
72
76
|
- lib/furnace-avm2/abc/metadata/ns_set_info.rb
|
73
|
-
- lib/furnace-avm2/abc/metadata/option_detail.rb
|
74
|
-
- lib/furnace-avm2/abc/metadata/option_info.rb
|
75
77
|
- lib/furnace-avm2/abc/metadata/record_with_traits.rb
|
78
|
+
- lib/furnace-avm2/abc/metadata/record_with_value.rb
|
76
79
|
- lib/furnace-avm2/abc/metadata/script_info.rb
|
77
80
|
- lib/furnace-avm2/abc/metadata/trait_class.rb
|
78
81
|
- lib/furnace-avm2/abc/metadata/trait_function.rb
|
@@ -131,10 +134,14 @@ files:
|
|
131
134
|
- lib/furnace-avm2/abc/opcodes/control_transfer/as3_jump.rb
|
132
135
|
- lib/furnace-avm2/abc/opcodes/control_transfer/as3_lookupswitch.rb
|
133
136
|
- lib/furnace-avm2/abc/opcodes/control_transfer_opcode.rb
|
137
|
+
- lib/furnace-avm2/abc/opcodes/debug/as3_debug.rb
|
138
|
+
- lib/furnace-avm2/abc/opcodes/debug/as3_debugfile.rb
|
139
|
+
- lib/furnace-avm2/abc/opcodes/debug/as3_debugline.rb
|
134
140
|
- lib/furnace-avm2/abc/opcodes/exception/as3_newcatch.rb
|
135
141
|
- lib/furnace-avm2/abc/opcodes/exception_opcode.rb
|
136
142
|
- lib/furnace-avm2/abc/opcodes/function_invocation/as3_call.rb
|
137
143
|
- lib/furnace-avm2/abc/opcodes/function_invocation/as3_callproperty.rb
|
144
|
+
- lib/furnace-avm2/abc/opcodes/function_invocation/as3_callproplex.rb
|
138
145
|
- lib/furnace-avm2/abc/opcodes/function_invocation/as3_callpropvoid.rb
|
139
146
|
- lib/furnace-avm2/abc/opcodes/function_invocation/as3_callsuper.rb
|
140
147
|
- lib/furnace-avm2/abc/opcodes/function_invocation/as3_callsupervoid.rb
|
@@ -226,47 +233,112 @@ files:
|
|
226
233
|
- lib/furnace-avm2/abc/primitives/record.rb
|
227
234
|
- lib/furnace-avm2/binary/choice_definition.rb
|
228
235
|
- lib/furnace-avm2/binary/record.rb
|
236
|
+
- lib/furnace-avm2/source/declaration_tokens/argument_declaration_token.rb
|
237
|
+
- lib/furnace-avm2/source/declaration_tokens/arguments_token.rb
|
238
|
+
- lib/furnace-avm2/source/declaration_tokens/callee_token.rb
|
239
|
+
- lib/furnace-avm2/source/declaration_tokens/class_implementations_token.rb
|
240
|
+
- lib/furnace-avm2/source/declaration_tokens/class_inheritance_token.rb
|
241
|
+
- lib/furnace-avm2/source/declaration_tokens/class_name_token.rb
|
242
|
+
- lib/furnace-avm2/source/declaration_tokens/class_specifiers_token.rb
|
243
|
+
- lib/furnace-avm2/source/declaration_tokens/class_token.rb
|
244
|
+
- lib/furnace-avm2/source/declaration_tokens/comment_token.rb
|
245
|
+
- lib/furnace-avm2/source/declaration_tokens/constructor_specifiers_token.rb
|
246
|
+
- lib/furnace-avm2/source/declaration_tokens/constructor_token.rb
|
247
|
+
- lib/furnace-avm2/source/declaration_tokens/function_name_token.rb
|
248
|
+
- lib/furnace-avm2/source/declaration_tokens/import_token.rb
|
249
|
+
- lib/furnace-avm2/source/declaration_tokens/initialization_token.rb
|
250
|
+
- lib/furnace-avm2/source/declaration_tokens/method_specifiers_token.rb
|
251
|
+
- lib/furnace-avm2/source/declaration_tokens/method_token.rb
|
252
|
+
- lib/furnace-avm2/source/declaration_tokens/multiname_token.rb
|
253
|
+
- lib/furnace-avm2/source/declaration_tokens/namespace_name_token.rb
|
254
|
+
- lib/furnace-avm2/source/declaration_tokens/package_name_token.rb
|
255
|
+
- lib/furnace-avm2/source/declaration_tokens/package_token.rb
|
256
|
+
- lib/furnace-avm2/source/declaration_tokens/rest_argument_token.rb
|
257
|
+
- lib/furnace-avm2/source/declaration_tokens/scope_token.rb
|
258
|
+
- lib/furnace-avm2/source/declaration_tokens/script_token.rb
|
259
|
+
- lib/furnace-avm2/source/declaration_tokens/slot_name_token.rb
|
260
|
+
- lib/furnace-avm2/source/declaration_tokens/slot_token.rb
|
261
|
+
- lib/furnace-avm2/source/declaration_tokens/specifiers_token.rb
|
262
|
+
- lib/furnace-avm2/source/declaration_tokens/token_with_traits.rb
|
263
|
+
- lib/furnace-avm2/source/declaration_tokens/type_token.rb
|
264
|
+
- lib/furnace-avm2/source/decompiler.rb
|
265
|
+
- lib/furnace-avm2/source/implementation_tokens/access_token.rb
|
266
|
+
- lib/furnace-avm2/source/implementation_tokens/array_token.rb
|
267
|
+
- lib/furnace-avm2/source/implementation_tokens/as_token.rb
|
268
|
+
- lib/furnace-avm2/source/implementation_tokens/assignment_token.rb
|
269
|
+
- lib/furnace-avm2/source/implementation_tokens/binary_operator_token.rb
|
270
|
+
- lib/furnace-avm2/source/implementation_tokens/break_token.rb
|
271
|
+
- lib/furnace-avm2/source/implementation_tokens/call_token.rb
|
272
|
+
- lib/furnace-avm2/source/implementation_tokens/continue_token.rb
|
273
|
+
- lib/furnace-avm2/source/implementation_tokens/control_flow_token.rb
|
274
|
+
- lib/furnace-avm2/source/implementation_tokens/control_transfer_token.rb
|
275
|
+
- lib/furnace-avm2/source/implementation_tokens/delete_token.rb
|
276
|
+
- lib/furnace-avm2/source/implementation_tokens/do_token.rb
|
277
|
+
- lib/furnace-avm2/source/implementation_tokens/else_if_token.rb
|
278
|
+
- lib/furnace-avm2/source/implementation_tokens/else_token.rb
|
279
|
+
- lib/furnace-avm2/source/implementation_tokens/for_each_token.rb
|
280
|
+
- lib/furnace-avm2/source/implementation_tokens/for_token.rb
|
281
|
+
- lib/furnace-avm2/source/implementation_tokens/generic_specializers_token.rb
|
282
|
+
- lib/furnace-avm2/source/implementation_tokens/generic_type_token.rb
|
283
|
+
- lib/furnace-avm2/source/implementation_tokens/if_token.rb
|
284
|
+
- lib/furnace-avm2/source/implementation_tokens/immediate_token.rb
|
285
|
+
- lib/furnace-avm2/source/implementation_tokens/immediate_typename_token.rb
|
286
|
+
- lib/furnace-avm2/source/implementation_tokens/in_token.rb
|
287
|
+
- lib/furnace-avm2/source/implementation_tokens/index_token.rb
|
288
|
+
- lib/furnace-avm2/source/implementation_tokens/is_complex.rb
|
289
|
+
- lib/furnace-avm2/source/implementation_tokens/is_simple.rb
|
290
|
+
- lib/furnace-avm2/source/implementation_tokens/is_token.rb
|
291
|
+
- lib/furnace-avm2/source/implementation_tokens/label_declaration_token.rb
|
292
|
+
- lib/furnace-avm2/source/implementation_tokens/label_token.rb
|
293
|
+
- lib/furnace-avm2/source/implementation_tokens/local_variable_token.rb
|
294
|
+
- lib/furnace-avm2/source/implementation_tokens/new_token.rb
|
295
|
+
- lib/furnace-avm2/source/implementation_tokens/object_pair_token.rb
|
296
|
+
- lib/furnace-avm2/source/implementation_tokens/object_token.rb
|
297
|
+
- lib/furnace-avm2/source/implementation_tokens/parentheses_token.rb
|
298
|
+
- lib/furnace-avm2/source/implementation_tokens/property_name_token.rb
|
299
|
+
- lib/furnace-avm2/source/implementation_tokens/return_token.rb
|
300
|
+
- lib/furnace-avm2/source/implementation_tokens/rtname_token.rb
|
301
|
+
- lib/furnace-avm2/source/implementation_tokens/statement_token.rb
|
302
|
+
- lib/furnace-avm2/source/implementation_tokens/super_token.rb
|
303
|
+
- lib/furnace-avm2/source/implementation_tokens/switch_token.rb
|
304
|
+
- lib/furnace-avm2/source/implementation_tokens/ternary_operator_token.rb
|
305
|
+
- lib/furnace-avm2/source/implementation_tokens/throw_token.rb
|
306
|
+
- lib/furnace-avm2/source/implementation_tokens/typeof_token.rb
|
307
|
+
- lib/furnace-avm2/source/implementation_tokens/unary_operator_token.rb
|
308
|
+
- lib/furnace-avm2/source/implementation_tokens/unary_post_operator_token.rb
|
309
|
+
- lib/furnace-avm2/source/implementation_tokens/variable_name_token.rb
|
310
|
+
- lib/furnace-avm2/source/implementation_tokens/while_token.rb
|
229
311
|
- lib/furnace-avm2/transform.rb
|
230
312
|
- lib/furnace-avm2/transform/ast_build.rb
|
231
313
|
- lib/furnace-avm2/transform/ast_normalize.rb
|
314
|
+
- lib/furnace-avm2/transform/cfg_build.rb
|
315
|
+
- lib/furnace-avm2/transform/cfg_reduce.rb
|
316
|
+
- lib/furnace-avm2/transform/nf_normalize.rb
|
232
317
|
- lib/furnace-avm2/version.rb
|
233
|
-
- test/
|
234
|
-
- test/exception.as
|
235
|
-
- test/literal.abc
|
236
|
-
- test/literal.as
|
237
|
-
- test/logic.abc
|
238
|
-
- test/logic.as
|
239
|
-
- test/loops.abc
|
240
|
-
- test/loops.as
|
241
|
-
- test/number.abc
|
242
|
-
- test/number.as
|
243
|
-
- test/switch.abc
|
244
|
-
- test/switch.as
|
245
|
-
- test/ternary.abc
|
246
|
-
- test/ternary.as
|
318
|
+
- test/basic.as
|
247
319
|
homepage: http://github.com/whitequark/furnace-avm2
|
248
320
|
licenses: []
|
249
|
-
post_install_message:
|
321
|
+
post_install_message:
|
250
322
|
rdoc_options: []
|
251
323
|
require_paths:
|
252
324
|
- lib
|
253
325
|
required_ruby_version: !ruby/object:Gem::Requirement
|
254
|
-
none: false
|
255
326
|
requirements:
|
256
327
|
- - ! '>='
|
257
328
|
- !ruby/object:Gem::Version
|
258
329
|
version: '0'
|
259
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
260
330
|
none: false
|
331
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
261
332
|
requirements:
|
262
333
|
- - ! '>='
|
263
334
|
- !ruby/object:Gem::Version
|
264
335
|
version: '0'
|
336
|
+
none: false
|
265
337
|
requirements: []
|
266
|
-
rubyforge_project:
|
267
|
-
rubygems_version: 1.8.
|
268
|
-
signing_key:
|
338
|
+
rubyforge_project:
|
339
|
+
rubygems_version: 1.8.15
|
340
|
+
signing_key:
|
269
341
|
specification_version: 3
|
270
342
|
summary: AVM2 analysis framework based on Furnace
|
271
343
|
test_files: []
|
272
|
-
|
344
|
+
...
|
data/test/exception.as
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
package test {
|
2
|
-
function c() {
|
3
|
-
try {
|
4
|
-
hoge();
|
5
|
-
} finally {
|
6
|
-
piyo();
|
7
|
-
}
|
8
|
-
}
|
9
|
-
function b() {
|
10
|
-
try {
|
11
|
-
hoge();
|
12
|
-
throw 1;
|
13
|
-
fuga();
|
14
|
-
} catch(e: SecurityError) {
|
15
|
-
piyo(e);
|
16
|
-
}
|
17
|
-
}
|
18
|
-
function a() {
|
19
|
-
try {
|
20
|
-
hoge();
|
21
|
-
throw 1;
|
22
|
-
fuga();
|
23
|
-
} catch(e: SecurityError) {
|
24
|
-
piyo(e);
|
25
|
-
} catch(e: Error) {
|
26
|
-
throw e;
|
27
|
-
}
|
28
|
-
}
|
29
|
-
}
|
data/test/literal.as
DELETED
data/test/logic.as
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
package test {
|
2
|
-
function P_a_or_b_p_and_P_c_and_d_p_or_e(a: Boolean, b:Boolean, c:Boolean, d:Boolean, e:Boolean) : Boolean {
|
3
|
-
var v:Boolean = (a || b) && (c && d) || e;
|
4
|
-
away();
|
5
|
-
return v;
|
6
|
-
}
|
7
|
-
function a_or_b(a: Boolean, b:Boolean, c:Boolean, d:Boolean, e:Boolean) : Boolean {
|
8
|
-
if(a || b) {
|
9
|
-
yes();
|
10
|
-
} else {
|
11
|
-
no();
|
12
|
-
}
|
13
|
-
}
|
14
|
-
function a_and_b_and_c(a: Boolean, b:Boolean, c:Boolean, d:Boolean, e:Boolean) : Boolean {
|
15
|
-
return a && b && c;
|
16
|
-
}
|
17
|
-
function P_a_and_b_p_and_c(a: Boolean, b:Boolean, c:Boolean, d:Boolean, e:Boolean) : Boolean {
|
18
|
-
return (a && b) && c;
|
19
|
-
}
|
20
|
-
function a_and_b(a: Boolean, b:Boolean, c:Boolean, d:Boolean, e:Boolean) : Boolean {
|
21
|
-
return a && b;
|
22
|
-
}
|
23
|
-
}
|
data/test/loops.as
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
package test {
|
2
|
-
function d() {
|
3
|
-
while(true) {
|
4
|
-
pow();
|
5
|
-
if(frak()) { a(); break; b(); }
|
6
|
-
weee();
|
7
|
-
}
|
8
|
-
}
|
9
|
-
function c() {
|
10
|
-
while(true) {
|
11
|
-
pow();
|
12
|
-
if(frak()) { break; }
|
13
|
-
weee();
|
14
|
-
}
|
15
|
-
}
|
16
|
-
function b() {
|
17
|
-
weee();
|
18
|
-
for(var q:int = 1; q > 0; q++) {
|
19
|
-
frak();
|
20
|
-
}
|
21
|
-
}
|
22
|
-
function a() {
|
23
|
-
var q:int = 1;
|
24
|
-
weee();
|
25
|
-
while(q > 0) {
|
26
|
-
frak();
|
27
|
-
q++;
|
28
|
-
}
|
29
|
-
}
|
30
|
-
}
|
data/test/number.as
DELETED
data/test/switch.as
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
package test {
|
2
|
-
function b(q:int):Boolean {
|
3
|
-
|
4
|
-
for(;;) {
|
5
|
-
switch(prop) {
|
6
|
-
case 0x10:
|
7
|
-
case 0x20:
|
8
|
-
fuga();
|
9
|
-
break;
|
10
|
-
|
11
|
-
case 0x30:
|
12
|
-
piyo();
|
13
|
-
break;
|
14
|
-
|
15
|
-
default:
|
16
|
-
baz();
|
17
|
-
break;
|
18
|
-
}
|
19
|
-
}
|
20
|
-
return false;
|
21
|
-
}
|
22
|
-
function a(q:int):Boolean {
|
23
|
-
switch(q) {
|
24
|
-
case 0x10:
|
25
|
-
hoge();
|
26
|
-
case 0x20:
|
27
|
-
fuga();
|
28
|
-
break;
|
29
|
-
case 0x30:
|
30
|
-
piyo();
|
31
|
-
break;
|
32
|
-
default:
|
33
|
-
baz();
|
34
|
-
break;
|
35
|
-
}
|
36
|
-
return false;
|
37
|
-
}
|
38
|
-
}
|
data/test/ternary.as
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
package test {
|
2
|
-
function hardcore(a: Boolean, b:Boolean, c:Boolean, d:Boolean, e:Boolean) : Boolean {
|
3
|
-
if(((a && b) ? (c || d) && e : b) && (a || b)) {
|
4
|
-
return pow();
|
5
|
-
} else {
|
6
|
-
weeee();
|
7
|
-
}
|
8
|
-
duh();
|
9
|
-
}
|
10
|
-
function q(a: Boolean, b:Boolean, c:Boolean, d:Boolean, e:Boolean) : Boolean {
|
11
|
-
return ((a ? b : c) ? (b ? c : d) : (c ? d : e));
|
12
|
-
}
|
13
|
-
function a_I_b_E_c_I_d_E_e(a: Boolean, b:Boolean, c:Boolean, d:Boolean, e:Boolean) : Boolean {
|
14
|
-
return a ? b : (c ? d : e);
|
15
|
-
}
|
16
|
-
function a_I_b_I_c_E_d_E_e(a: Boolean, b:Boolean, c:Boolean, d:Boolean, e:Boolean) : Boolean {
|
17
|
-
return a ? (b ? c : d) : e;
|
18
|
-
}
|
19
|
-
function a_I_b_E_c(a: Boolean, b:Boolean, c:Boolean, d:Boolean, e:Boolean) : Boolean {
|
20
|
-
return (1 > 2) ? b : c;
|
21
|
-
}
|
22
|
-
}
|