koi-vm-ruby 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. data/.gitignore +2 -0
  2. data/README.rdoc +64 -0
  3. data/Rakefile +42 -0
  4. data/VERSION +1 -0
  5. data/architecture.rdoc +112 -0
  6. data/examples/blastoff.rb +20 -0
  7. data/examples/hello_world.rb +8 -0
  8. data/koi-vm.gemspec +198 -0
  9. data/lib/.gitkeep +0 -0
  10. data/lib/koi-vm-ruby.rb +10 -0
  11. data/lib/koi-vm-ruby/accessors.rb +63 -0
  12. data/lib/koi-vm-ruby/core.rb +48 -0
  13. data/lib/koi-vm-ruby/exceptions.rb +8 -0
  14. data/lib/koi-vm-ruby/helpers.rb +5 -0
  15. data/lib/koi-vm-ruby/opcodes/_opcode_constants.rb +68 -0
  16. data/lib/koi-vm-ruby/opcodes/_value_constants.rb +11 -0
  17. data/lib/koi-vm-ruby/opcodes/comparative_operations/equal.rb +11 -0
  18. data/lib/koi-vm-ruby/opcodes/comparative_operations/greater_than.rb +14 -0
  19. data/lib/koi-vm-ruby/opcodes/comparative_operations/invert.rb +12 -0
  20. data/lib/koi-vm-ruby/opcodes/comparative_operations/less_than.rb +14 -0
  21. data/lib/koi-vm-ruby/opcodes/control_operations/exit.rb +10 -0
  22. data/lib/koi-vm-ruby/opcodes/control_operations/no_op.rb +9 -0
  23. data/lib/koi-vm-ruby/opcodes/flow_control_operations/jump.rb +11 -0
  24. data/lib/koi-vm-ruby/opcodes/flow_control_operations/jump_if.rb +16 -0
  25. data/lib/koi-vm-ruby/opcodes/flow_control_operations/jump_unless.rb +16 -0
  26. data/lib/koi-vm-ruby/opcodes/function_operations/call.rb +13 -0
  27. data/lib/koi-vm-ruby/opcodes/function_operations/push_function.rb +19 -0
  28. data/lib/koi-vm-ruby/opcodes/function_operations/return.rb +11 -0
  29. data/lib/koi-vm-ruby/opcodes/function_operations/tailcall.rb +12 -0
  30. data/lib/koi-vm-ruby/opcodes/hash_operations/get_key.rb +14 -0
  31. data/lib/koi-vm-ruby/opcodes/hash_operations/has_key.rb +18 -0
  32. data/lib/koi-vm-ruby/opcodes/hash_operations/length.rb +19 -0
  33. data/lib/koi-vm-ruby/opcodes/hash_operations/num_pairs.rb +12 -0
  34. data/lib/koi-vm-ruby/opcodes/hash_operations/pairs.rb +22 -0
  35. data/lib/koi-vm-ruby/opcodes/hash_operations/push_hash.rb +10 -0
  36. data/lib/koi-vm-ruby/opcodes/hash_operations/set_key.rb +14 -0
  37. data/lib/koi-vm-ruby/opcodes/io_operations/gets.rb +10 -0
  38. data/lib/koi-vm-ruby/opcodes/io_operations/print.rb +13 -0
  39. data/lib/koi-vm-ruby/opcodes/math_operations/add.rb +14 -0
  40. data/lib/koi-vm-ruby/opcodes/math_operations/divide.rb +14 -0
  41. data/lib/koi-vm-ruby/opcodes/math_operations/multiply.rb +14 -0
  42. data/lib/koi-vm-ruby/opcodes/math_operations/subtract.rb +14 -0
  43. data/lib/koi-vm-ruby/opcodes/push_operations/push_bool.rb +12 -0
  44. data/lib/koi-vm-ruby/opcodes/push_operations/push_float.rb +12 -0
  45. data/lib/koi-vm-ruby/opcodes/push_operations/push_int.rb +12 -0
  46. data/lib/koi-vm-ruby/opcodes/push_operations/push_nil.rb +10 -0
  47. data/lib/koi-vm-ruby/opcodes/push_operations/push_string.rb +12 -0
  48. data/lib/koi-vm-ruby/opcodes/stack_operations/dup.rb +11 -0
  49. data/lib/koi-vm-ruby/opcodes/stack_operations/pop.rb +11 -0
  50. data/lib/koi-vm-ruby/opcodes/stack_operations/stksize.rb +10 -0
  51. data/lib/koi-vm-ruby/opcodes/stack_operations/swap.rb +11 -0
  52. data/lib/koi-vm-ruby/opcodes/stack_operations/top.rb +13 -0
  53. data/lib/koi-vm-ruby/opcodes/stack_operations/typeof.rb +18 -0
  54. data/lib/koi-vm-ruby/opcodes/string_operations/concat.rb +12 -0
  55. data/lib/koi-vm-ruby/opcodes/string_operations/strlen.rb +12 -0
  56. data/lib/koi-vm-ruby/opcodes/string_operations/to_string.rb +16 -0
  57. data/lib/koi-vm-ruby/opcodes/variable_operations/get_global.rb +10 -0
  58. data/lib/koi-vm-ruby/opcodes/variable_operations/get_local.rb +10 -0
  59. data/lib/koi-vm-ruby/opcodes/variable_operations/set_global.rb +11 -0
  60. data/lib/koi-vm-ruby/opcodes/variable_operations/set_local.rb +11 -0
  61. data/test/.gitkeep +0 -0
  62. data/test/performance/.gitignore +1 -0
  63. data/test/performance/simple_benchmark.rb +87 -0
  64. data/test/setup/test_unit_extensions.rb +21 -0
  65. data/test/test_helper.rb +13 -0
  66. data/test/unit/opcodes/comparative_operations/equal_test.rb +116 -0
  67. data/test/unit/opcodes/comparative_operations/greater_than_test.rb +53 -0
  68. data/test/unit/opcodes/comparative_operations/invert_test.rb +44 -0
  69. data/test/unit/opcodes/comparative_operations/less_than_test.rb +53 -0
  70. data/test/unit/opcodes/control_operations/exit_test.rb +20 -0
  71. data/test/unit/opcodes/control_operations/no_op_test.rb +17 -0
  72. data/test/unit/opcodes/flow_control_operations/jump_if_test.rb +50 -0
  73. data/test/unit/opcodes/flow_control_operations/jump_test.rb +36 -0
  74. data/test/unit/opcodes/flow_control_operations/jump_unless_test.rb +50 -0
  75. data/test/unit/opcodes/function_operations/call_test.rb +39 -0
  76. data/test/unit/opcodes/function_operations/push_function_test.rb +41 -0
  77. data/test/unit/opcodes/function_operations/return_test.rb +31 -0
  78. data/test/unit/opcodes/function_operations/tailcall_test.rb +41 -0
  79. data/test/unit/opcodes/hash_operations/get_key_test.rb +56 -0
  80. data/test/unit/opcodes/hash_operations/has_key_test.rb +56 -0
  81. data/test/unit/opcodes/hash_operations/length_test.rb +46 -0
  82. data/test/unit/opcodes/hash_operations/num_pairs_test.rb +46 -0
  83. data/test/unit/opcodes/hash_operations/pairs_test.rb +67 -0
  84. data/test/unit/opcodes/hash_operations/push_hash_test.rb +16 -0
  85. data/test/unit/opcodes/hash_operations/set_key_test.rb +56 -0
  86. data/test/unit/opcodes/io_operations/gets_test.rb +38 -0
  87. data/test/unit/opcodes/io_operations/print_test.rb +42 -0
  88. data/test/unit/opcodes/math_operations/add_test.rb +62 -0
  89. data/test/unit/opcodes/math_operations/divide_test.rb +62 -0
  90. data/test/unit/opcodes/math_operations/multiply_test.rb +62 -0
  91. data/test/unit/opcodes/math_operations/subtract_test.rb +62 -0
  92. data/test/unit/opcodes/push_operations/push_bool_test.rb +36 -0
  93. data/test/unit/opcodes/push_operations/push_float_test.rb +27 -0
  94. data/test/unit/opcodes/push_operations/push_int_test.rb +27 -0
  95. data/test/unit/opcodes/push_operations/push_nil_test.rb +16 -0
  96. data/test/unit/opcodes/push_operations/push_string_test.rb +27 -0
  97. data/test/unit/opcodes/stack_operations/dup_test.rb +25 -0
  98. data/test/unit/opcodes/stack_operations/pop_test.rb +28 -0
  99. data/test/unit/opcodes/stack_operations/stksize_test.rb +20 -0
  100. data/test/unit/opcodes/stack_operations/swap_test.rb +36 -0
  101. data/test/unit/opcodes/stack_operations/top_test.rb +45 -0
  102. data/test/unit/opcodes/stack_operations/typeof_test.rb +79 -0
  103. data/test/unit/opcodes/string_operations/concat_test.rb +65 -0
  104. data/test/unit/opcodes/string_operations/strlen_test.rb +44 -0
  105. data/test/unit/opcodes/string_operations/to_string_test.rb +70 -0
  106. data/test/unit/opcodes/variable_operations/get_global_test.rb +18 -0
  107. data/test/unit/opcodes/variable_operations/get_local_test.rb +18 -0
  108. data/test/unit/opcodes/variable_operations/set_global_test.rb +27 -0
  109. data/test/unit/opcodes/variable_operations/set_local_test.rb +27 -0
  110. data/test/unit/vm_initialization_test.rb +86 -0
  111. metadata +224 -0
@@ -0,0 +1,18 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper.rb'))
2
+
3
+ class GetGlobalTest < Test::Unit::TestCase
4
+
5
+ include KoiVMRuby
6
+
7
+ test "should get global variable at index x and push onto stack" do
8
+ vm = VM.new
9
+ vm.globals[1] = [STRING_, "hello world!"]
10
+ vm.run [
11
+ GET_GLOBAL, 1
12
+ ]
13
+ assert_equal [[STRING_, "hello world!"]], vm.data_stack
14
+ assert_equal 2, vm.instruction_pointer
15
+ end
16
+
17
+
18
+ end
@@ -0,0 +1,18 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper.rb'))
2
+
3
+ class GetLocalTest < Test::Unit::TestCase
4
+
5
+ include KoiVMRuby
6
+
7
+ test "should get local variable at index x and push onto stack" do
8
+ vm = VM.new
9
+ vm.locals[1] = [STRING_, "hello world!"]
10
+ vm.run [
11
+ GET_LOCAL, 1
12
+ ]
13
+ assert_equal [[STRING_, "hello world!"]], vm.data_stack
14
+ assert_equal 2, vm.instruction_pointer
15
+ end
16
+
17
+
18
+ end
@@ -0,0 +1,27 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper.rb'))
2
+
3
+ class SetGlobalTest < Test::Unit::TestCase
4
+
5
+ include KoiVMRuby
6
+
7
+ test "should set global variable at index x" do
8
+ vm = VM.new
9
+ vm.data_stack = [[STRING_, "test"]]
10
+ vm.run [
11
+ SET_GLOBAL, 1
12
+ ]
13
+ assert_equal({1 => [STRING_, "test"]}, vm.globals)
14
+ assert_equal [], vm.data_stack
15
+ assert_equal 2, vm.instruction_pointer
16
+ end
17
+
18
+ test "should raise StackError if there is nothing on the stack" do
19
+ assert_raises StackError do
20
+ vm = VM.new
21
+ vm.run [
22
+ SET_GLOBAL, 1
23
+ ]
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,27 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'test_helper.rb'))
2
+
3
+ class SetLocalTest < Test::Unit::TestCase
4
+
5
+ include KoiVMRuby
6
+
7
+ test "should set local variable at index x" do
8
+ vm = VM.new
9
+ vm.data_stack = [[STRING_, "test"]]
10
+ vm.run [
11
+ SET_LOCAL, 1
12
+ ]
13
+ assert_equal({1 => [STRING_, "test"]}, vm.locals)
14
+ assert_equal [], vm.data_stack
15
+ assert_equal 2, vm.instruction_pointer
16
+ end
17
+
18
+ test "should raise StackError if there is nothing on the stack" do
19
+ assert_raises StackError do
20
+ vm = VM.new
21
+ vm.run [
22
+ SET_LOCAL, 1
23
+ ]
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,86 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper.rb'))
2
+
3
+ class VmInitializationTest < Test::Unit::TestCase
4
+
5
+ include KoiVMRuby
6
+
7
+ test "VM.new without arguments should return default state" do
8
+ vm = VM.new
9
+ default_state = {
10
+ :opcodes => [],
11
+ :globals => {},
12
+ :fiber => {
13
+ :data_stack => [],
14
+ :return_stack => [],
15
+ :locals => [{}],
16
+ :instruction_pointer => 0,
17
+ :level => 0
18
+ }
19
+ }
20
+ assert_equal default_state, vm.state
21
+ end
22
+
23
+ test "VM.new with valid state should not raise error" do
24
+ assert_nothing_raised do
25
+ VM.new({
26
+ :globals => {},
27
+ :fiber => {
28
+ :data_stack => [],
29
+ :return_stack => [],
30
+ :locals => [{}],
31
+ :instruction_pointer => 0,
32
+ :level => 0
33
+ }
34
+ })
35
+ end
36
+ end
37
+
38
+ test "VM.new should not raise ArgumentError if given empty hash" do
39
+ assert_nothing_raised do
40
+ VM.new({})
41
+ end
42
+ end
43
+
44
+ test "VM.new should raise ArgumentError if given state that is not a hash" do
45
+ assert_raises TypeError do
46
+ VM.new([])
47
+ end
48
+ end
49
+
50
+ test "VM.new should raise ArgumentError if given fiber with :stack that is not an array" do
51
+ assert_raises ArgumentError do
52
+ VM.new({
53
+ :fiber => {
54
+ :stack => 0
55
+ }
56
+ })
57
+ end
58
+ end
59
+
60
+ test "VM.new should raise ArgumentError if given fiber with :instruction_pointer that is not an integer" do
61
+ assert_raises ArgumentError do
62
+ VM.new({
63
+ :fiber => {
64
+ :instruction_pointer => []
65
+ }
66
+ })
67
+ end
68
+ end
69
+
70
+ test "VM.new should raise ArgumentError if given :globals that is not an array" do
71
+ assert_raises ArgumentError do
72
+ VM.new({
73
+ :globals => 1
74
+ })
75
+ end
76
+ end
77
+
78
+ test "VM.new should raise ArgumentError if given :opcodes that is not an array" do
79
+ assert_raises ArgumentError do
80
+ VM.new({
81
+ :opcodes => 1
82
+ })
83
+ end
84
+ end
85
+
86
+ end
metadata ADDED
@@ -0,0 +1,224 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: koi-vm-ruby
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 4
9
+ version: 0.0.4
10
+ platform: ruby
11
+ authors:
12
+ - Aaron Gough
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-08-31 00:00:00 -04:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: A Virtual Machine for the Koi programming language written in Ruby.
22
+ email: aaron@aarongough.com
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files:
28
+ - README.rdoc
29
+ files:
30
+ - .gitignore
31
+ - README.rdoc
32
+ - Rakefile
33
+ - VERSION
34
+ - architecture.rdoc
35
+ - examples/blastoff.rb
36
+ - examples/hello_world.rb
37
+ - koi-vm.gemspec
38
+ - lib/.gitkeep
39
+ - lib/koi-vm-ruby.rb
40
+ - lib/koi-vm-ruby/accessors.rb
41
+ - lib/koi-vm-ruby/core.rb
42
+ - lib/koi-vm-ruby/exceptions.rb
43
+ - lib/koi-vm-ruby/helpers.rb
44
+ - lib/koi-vm-ruby/opcodes/_opcode_constants.rb
45
+ - lib/koi-vm-ruby/opcodes/_value_constants.rb
46
+ - lib/koi-vm-ruby/opcodes/comparative_operations/equal.rb
47
+ - lib/koi-vm-ruby/opcodes/comparative_operations/greater_than.rb
48
+ - lib/koi-vm-ruby/opcodes/comparative_operations/invert.rb
49
+ - lib/koi-vm-ruby/opcodes/comparative_operations/less_than.rb
50
+ - lib/koi-vm-ruby/opcodes/control_operations/exit.rb
51
+ - lib/koi-vm-ruby/opcodes/control_operations/no_op.rb
52
+ - lib/koi-vm-ruby/opcodes/flow_control_operations/jump.rb
53
+ - lib/koi-vm-ruby/opcodes/flow_control_operations/jump_if.rb
54
+ - lib/koi-vm-ruby/opcodes/flow_control_operations/jump_unless.rb
55
+ - lib/koi-vm-ruby/opcodes/function_operations/call.rb
56
+ - lib/koi-vm-ruby/opcodes/function_operations/push_function.rb
57
+ - lib/koi-vm-ruby/opcodes/function_operations/return.rb
58
+ - lib/koi-vm-ruby/opcodes/function_operations/tailcall.rb
59
+ - lib/koi-vm-ruby/opcodes/hash_operations/get_key.rb
60
+ - lib/koi-vm-ruby/opcodes/hash_operations/has_key.rb
61
+ - lib/koi-vm-ruby/opcodes/hash_operations/length.rb
62
+ - lib/koi-vm-ruby/opcodes/hash_operations/num_pairs.rb
63
+ - lib/koi-vm-ruby/opcodes/hash_operations/pairs.rb
64
+ - lib/koi-vm-ruby/opcodes/hash_operations/push_hash.rb
65
+ - lib/koi-vm-ruby/opcodes/hash_operations/set_key.rb
66
+ - lib/koi-vm-ruby/opcodes/io_operations/gets.rb
67
+ - lib/koi-vm-ruby/opcodes/io_operations/print.rb
68
+ - lib/koi-vm-ruby/opcodes/math_operations/add.rb
69
+ - lib/koi-vm-ruby/opcodes/math_operations/divide.rb
70
+ - lib/koi-vm-ruby/opcodes/math_operations/multiply.rb
71
+ - lib/koi-vm-ruby/opcodes/math_operations/subtract.rb
72
+ - lib/koi-vm-ruby/opcodes/push_operations/push_bool.rb
73
+ - lib/koi-vm-ruby/opcodes/push_operations/push_float.rb
74
+ - lib/koi-vm-ruby/opcodes/push_operations/push_int.rb
75
+ - lib/koi-vm-ruby/opcodes/push_operations/push_nil.rb
76
+ - lib/koi-vm-ruby/opcodes/push_operations/push_string.rb
77
+ - lib/koi-vm-ruby/opcodes/stack_operations/dup.rb
78
+ - lib/koi-vm-ruby/opcodes/stack_operations/pop.rb
79
+ - lib/koi-vm-ruby/opcodes/stack_operations/stksize.rb
80
+ - lib/koi-vm-ruby/opcodes/stack_operations/swap.rb
81
+ - lib/koi-vm-ruby/opcodes/stack_operations/top.rb
82
+ - lib/koi-vm-ruby/opcodes/stack_operations/typeof.rb
83
+ - lib/koi-vm-ruby/opcodes/string_operations/concat.rb
84
+ - lib/koi-vm-ruby/opcodes/string_operations/strlen.rb
85
+ - lib/koi-vm-ruby/opcodes/string_operations/to_string.rb
86
+ - lib/koi-vm-ruby/opcodes/variable_operations/get_global.rb
87
+ - lib/koi-vm-ruby/opcodes/variable_operations/get_local.rb
88
+ - lib/koi-vm-ruby/opcodes/variable_operations/set_global.rb
89
+ - lib/koi-vm-ruby/opcodes/variable_operations/set_local.rb
90
+ - test/.gitkeep
91
+ - test/performance/.gitignore
92
+ - test/performance/simple_benchmark.rb
93
+ - test/setup/test_unit_extensions.rb
94
+ - test/test_helper.rb
95
+ - test/unit/opcodes/comparative_operations/equal_test.rb
96
+ - test/unit/opcodes/comparative_operations/greater_than_test.rb
97
+ - test/unit/opcodes/comparative_operations/invert_test.rb
98
+ - test/unit/opcodes/comparative_operations/less_than_test.rb
99
+ - test/unit/opcodes/control_operations/exit_test.rb
100
+ - test/unit/opcodes/control_operations/no_op_test.rb
101
+ - test/unit/opcodes/flow_control_operations/jump_if_test.rb
102
+ - test/unit/opcodes/flow_control_operations/jump_test.rb
103
+ - test/unit/opcodes/flow_control_operations/jump_unless_test.rb
104
+ - test/unit/opcodes/function_operations/call_test.rb
105
+ - test/unit/opcodes/function_operations/push_function_test.rb
106
+ - test/unit/opcodes/function_operations/return_test.rb
107
+ - test/unit/opcodes/function_operations/tailcall_test.rb
108
+ - test/unit/opcodes/hash_operations/get_key_test.rb
109
+ - test/unit/opcodes/hash_operations/has_key_test.rb
110
+ - test/unit/opcodes/hash_operations/length_test.rb
111
+ - test/unit/opcodes/hash_operations/num_pairs_test.rb
112
+ - test/unit/opcodes/hash_operations/pairs_test.rb
113
+ - test/unit/opcodes/hash_operations/push_hash_test.rb
114
+ - test/unit/opcodes/hash_operations/set_key_test.rb
115
+ - test/unit/opcodes/io_operations/gets_test.rb
116
+ - test/unit/opcodes/io_operations/print_test.rb
117
+ - test/unit/opcodes/math_operations/add_test.rb
118
+ - test/unit/opcodes/math_operations/divide_test.rb
119
+ - test/unit/opcodes/math_operations/multiply_test.rb
120
+ - test/unit/opcodes/math_operations/subtract_test.rb
121
+ - test/unit/opcodes/push_operations/push_bool_test.rb
122
+ - test/unit/opcodes/push_operations/push_float_test.rb
123
+ - test/unit/opcodes/push_operations/push_int_test.rb
124
+ - test/unit/opcodes/push_operations/push_nil_test.rb
125
+ - test/unit/opcodes/push_operations/push_string_test.rb
126
+ - test/unit/opcodes/stack_operations/dup_test.rb
127
+ - test/unit/opcodes/stack_operations/pop_test.rb
128
+ - test/unit/opcodes/stack_operations/stksize_test.rb
129
+ - test/unit/opcodes/stack_operations/swap_test.rb
130
+ - test/unit/opcodes/stack_operations/top_test.rb
131
+ - test/unit/opcodes/stack_operations/typeof_test.rb
132
+ - test/unit/opcodes/string_operations/concat_test.rb
133
+ - test/unit/opcodes/string_operations/strlen_test.rb
134
+ - test/unit/opcodes/string_operations/to_string_test.rb
135
+ - test/unit/opcodes/variable_operations/get_global_test.rb
136
+ - test/unit/opcodes/variable_operations/get_local_test.rb
137
+ - test/unit/opcodes/variable_operations/set_global_test.rb
138
+ - test/unit/opcodes/variable_operations/set_local_test.rb
139
+ - test/unit/vm_initialization_test.rb
140
+ has_rdoc: true
141
+ homepage: http://github.com/aarongough/koi-vm-ruby
142
+ licenses: []
143
+
144
+ post_install_message:
145
+ rdoc_options:
146
+ - --charset=UTF-8
147
+ - --line-numbers
148
+ - --inline-source
149
+ require_paths:
150
+ - lib
151
+ required_ruby_version: !ruby/object:Gem::Requirement
152
+ none: false
153
+ requirements:
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ segments:
157
+ - 0
158
+ version: "0"
159
+ required_rubygems_version: !ruby/object:Gem::Requirement
160
+ none: false
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ segments:
165
+ - 0
166
+ version: "0"
167
+ requirements: []
168
+
169
+ rubyforge_project:
170
+ rubygems_version: 1.3.7
171
+ signing_key:
172
+ specification_version: 3
173
+ summary: A Koi Virtual Machine written in Ruby
174
+ test_files:
175
+ - test/performance/simple_benchmark.rb
176
+ - test/setup/test_unit_extensions.rb
177
+ - test/test_helper.rb
178
+ - test/unit/opcodes/comparative_operations/equal_test.rb
179
+ - test/unit/opcodes/comparative_operations/greater_than_test.rb
180
+ - test/unit/opcodes/comparative_operations/invert_test.rb
181
+ - test/unit/opcodes/comparative_operations/less_than_test.rb
182
+ - test/unit/opcodes/control_operations/exit_test.rb
183
+ - test/unit/opcodes/control_operations/no_op_test.rb
184
+ - test/unit/opcodes/flow_control_operations/jump_if_test.rb
185
+ - test/unit/opcodes/flow_control_operations/jump_test.rb
186
+ - test/unit/opcodes/flow_control_operations/jump_unless_test.rb
187
+ - test/unit/opcodes/function_operations/call_test.rb
188
+ - test/unit/opcodes/function_operations/push_function_test.rb
189
+ - test/unit/opcodes/function_operations/return_test.rb
190
+ - test/unit/opcodes/function_operations/tailcall_test.rb
191
+ - test/unit/opcodes/hash_operations/get_key_test.rb
192
+ - test/unit/opcodes/hash_operations/has_key_test.rb
193
+ - test/unit/opcodes/hash_operations/length_test.rb
194
+ - test/unit/opcodes/hash_operations/num_pairs_test.rb
195
+ - test/unit/opcodes/hash_operations/pairs_test.rb
196
+ - test/unit/opcodes/hash_operations/push_hash_test.rb
197
+ - test/unit/opcodes/hash_operations/set_key_test.rb
198
+ - test/unit/opcodes/io_operations/gets_test.rb
199
+ - test/unit/opcodes/io_operations/print_test.rb
200
+ - test/unit/opcodes/math_operations/add_test.rb
201
+ - test/unit/opcodes/math_operations/divide_test.rb
202
+ - test/unit/opcodes/math_operations/multiply_test.rb
203
+ - test/unit/opcodes/math_operations/subtract_test.rb
204
+ - test/unit/opcodes/push_operations/push_bool_test.rb
205
+ - test/unit/opcodes/push_operations/push_float_test.rb
206
+ - test/unit/opcodes/push_operations/push_int_test.rb
207
+ - test/unit/opcodes/push_operations/push_nil_test.rb
208
+ - test/unit/opcodes/push_operations/push_string_test.rb
209
+ - test/unit/opcodes/stack_operations/dup_test.rb
210
+ - test/unit/opcodes/stack_operations/pop_test.rb
211
+ - test/unit/opcodes/stack_operations/stksize_test.rb
212
+ - test/unit/opcodes/stack_operations/swap_test.rb
213
+ - test/unit/opcodes/stack_operations/top_test.rb
214
+ - test/unit/opcodes/stack_operations/typeof_test.rb
215
+ - test/unit/opcodes/string_operations/concat_test.rb
216
+ - test/unit/opcodes/string_operations/strlen_test.rb
217
+ - test/unit/opcodes/string_operations/to_string_test.rb
218
+ - test/unit/opcodes/variable_operations/get_global_test.rb
219
+ - test/unit/opcodes/variable_operations/get_local_test.rb
220
+ - test/unit/opcodes/variable_operations/set_global_test.rb
221
+ - test/unit/opcodes/variable_operations/set_local_test.rb
222
+ - test/unit/vm_initialization_test.rb
223
+ - examples/blastoff.rb
224
+ - examples/hello_world.rb