seafoam 0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.github/probots.yml +2 -0
- data/.github/workflows/rubocop.yml +10 -0
- data/.github/workflows/specs.yml +19 -0
- data/.gitignore +7 -0
- data/.rubocop.yml +34 -0
- data/.ruby-version +1 -0
- data/.seafoam/config +1 -0
- data/CODE_OF_CONDUCT.md +128 -0
- data/CONTRIBUTING.md +5 -0
- data/Gemfile +2 -0
- data/LICENSE.md +7 -0
- data/README.md +298 -0
- data/bin/bgv2isabelle +53 -0
- data/bin/bgv2json +42 -0
- data/bin/seafoam +24 -0
- data/docs/annotators.md +43 -0
- data/docs/bgv.md +284 -0
- data/docs/getting-graphs.md +47 -0
- data/examples/Fib.java +24 -0
- data/examples/MatMult.java +39 -0
- data/examples/fib-java.bgv +0 -0
- data/examples/fib-js.bgv +0 -0
- data/examples/fib-ruby.bgv +0 -0
- data/examples/fib.js +15 -0
- data/examples/fib.rb +15 -0
- data/examples/identity.bgv +0 -0
- data/examples/identity.rb +13 -0
- data/examples/java/Irreducible.j +35 -0
- data/examples/java/IrreducibleDecompiled.java +21 -0
- data/examples/java/JavaExamples.java +418 -0
- data/examples/java/exampleArithOperator.bgv +0 -0
- data/examples/java/exampleArithOperator.cfg +925 -0
- data/examples/java/exampleArrayAllocation.bgv +0 -0
- data/examples/java/exampleArrayAllocation.cfg +5268 -0
- data/examples/java/exampleArrayRead.bgv +0 -0
- data/examples/java/exampleArrayRead.cfg +2263 -0
- data/examples/java/exampleArrayWrite.bgv +0 -0
- data/examples/java/exampleArrayWrite.cfg +2315 -0
- data/examples/java/exampleCatch.bgv +0 -0
- data/examples/java/exampleCatch.cfg +4150 -0
- data/examples/java/exampleCompareOperator.bgv +0 -0
- data/examples/java/exampleCompareOperator.cfg +1109 -0
- data/examples/java/exampleDoubleSynchronized.bgv +0 -0
- data/examples/java/exampleDoubleSynchronized.cfg +26497 -0
- data/examples/java/exampleExactArith.bgv +0 -0
- data/examples/java/exampleExactArith.cfg +1888 -0
- data/examples/java/exampleFieldRead.bgv +0 -0
- data/examples/java/exampleFieldRead.cfg +1228 -0
- data/examples/java/exampleFieldWrite.bgv +0 -0
- data/examples/java/exampleFieldWrite.cfg +1102 -0
- data/examples/java/exampleFor.bgv +0 -0
- data/examples/java/exampleFor.cfg +3936 -0
- data/examples/java/exampleFullEscape.bgv +0 -0
- data/examples/java/exampleFullEscape.cfg +5893 -0
- data/examples/java/exampleIf.bgv +0 -0
- data/examples/java/exampleIf.cfg +2462 -0
- data/examples/java/exampleIfNeverTaken.bgv +0 -0
- data/examples/java/exampleIfNeverTaken.cfg +2476 -0
- data/examples/java/exampleInstanceOfManyImpls.bgv +0 -0
- data/examples/java/exampleInstanceOfManyImpls.cfg +6391 -0
- data/examples/java/exampleInstanceOfOneImpl.bgv +0 -0
- data/examples/java/exampleInstanceOfOneImpl.cfg +2604 -0
- data/examples/java/exampleIntSwitch.bgv +0 -0
- data/examples/java/exampleIntSwitch.cfg +3121 -0
- data/examples/java/exampleInterfaceCallManyImpls.bgv +0 -0
- data/examples/java/exampleInterfaceCallManyImpls.cfg +1358 -0
- data/examples/java/exampleInterfaceCallOneImpl.bgv +0 -0
- data/examples/java/exampleInterfaceCallOneImpl.cfg +3859 -0
- data/examples/java/exampleLocalInstanceOf.bgv +0 -0
- data/examples/java/exampleLocalInstanceOf.cfg +5276 -0
- data/examples/java/exampleLocalSynchronized.bgv +0 -0
- data/examples/java/exampleLocalSynchronized.cfg +1364 -0
- data/examples/java/exampleLocalVariables.bgv +0 -0
- data/examples/java/exampleLocalVariables.cfg +1195 -0
- data/examples/java/exampleLocalVariablesState.bgv +0 -0
- data/examples/java/exampleLocalVariablesState.cfg +1673 -0
- data/examples/java/exampleNestedWhile.bgv +0 -0
- data/examples/java/exampleNestedWhile.cfg +15499 -0
- data/examples/java/exampleNestedWhileBreak.bgv +0 -0
- data/examples/java/exampleNestedWhileBreak.cfg +11162 -0
- data/examples/java/exampleNoEscape.bgv +0 -0
- data/examples/java/exampleNoEscape.cfg +974 -0
- data/examples/java/exampleObjectAllocation.bgv +0 -0
- data/examples/java/exampleObjectAllocation.cfg +5287 -0
- data/examples/java/examplePartialEscape.bgv +0 -0
- data/examples/java/examplePartialEscape.cfg +7042 -0
- data/examples/java/examplePhi.bgv +0 -0
- data/examples/java/examplePhi.cfg +3227 -0
- data/examples/java/exampleReducible.bgv +0 -0
- data/examples/java/exampleReducible.cfg +5578 -0
- data/examples/java/exampleSimpleCall.bgv +0 -0
- data/examples/java/exampleSimpleCall.cfg +1435 -0
- data/examples/java/exampleStamp.bgv +0 -0
- data/examples/java/exampleStamp.cfg +913 -0
- data/examples/java/exampleStaticCall.bgv +0 -0
- data/examples/java/exampleStaticCall.cfg +1154 -0
- data/examples/java/exampleStringSwitch.bgv +0 -0
- data/examples/java/exampleStringSwitch.cfg +15377 -0
- data/examples/java/exampleSynchronized.bgv +0 -0
- data/examples/java/exampleSynchronized.cfg +26027 -0
- data/examples/java/exampleThrow.bgv +0 -0
- data/examples/java/exampleThrow.cfg +780 -0
- data/examples/java/exampleThrowCatch.bgv +0 -0
- data/examples/java/exampleThrowCatch.cfg +744 -0
- data/examples/java/exampleUnsafeRead.bgv +0 -0
- data/examples/java/exampleUnsafeRead.cfg +912 -0
- data/examples/java/exampleUnsafeWrite.bgv +0 -0
- data/examples/java/exampleUnsafeWrite.cfg +962 -0
- data/examples/java/exampleWhile.bgv +0 -0
- data/examples/java/exampleWhile.cfg +3936 -0
- data/examples/java/exampleWhileBreak.bgv +0 -0
- data/examples/java/exampleWhileBreak.cfg +5963 -0
- data/examples/matmult-java.bgv +0 -0
- data/examples/matmult-ruby.bgv +0 -0
- data/examples/matmult.rb +29 -0
- data/examples/overflow.bgv +0 -0
- data/examples/overflow.rb +13 -0
- data/lib/seafoam.rb +13 -0
- data/lib/seafoam/annotators.rb +54 -0
- data/lib/seafoam/annotators/fallback.rb +27 -0
- data/lib/seafoam/annotators/graal.rb +376 -0
- data/lib/seafoam/bgv/bgv_parser.rb +602 -0
- data/lib/seafoam/binary/binary_reader.rb +21 -0
- data/lib/seafoam/binary/io_binary_reader.rb +88 -0
- data/lib/seafoam/colors.rb +18 -0
- data/lib/seafoam/commands.rb +447 -0
- data/lib/seafoam/config.rb +34 -0
- data/lib/seafoam/graph.rb +91 -0
- data/lib/seafoam/graphviz_writer.rb +213 -0
- data/lib/seafoam/spotlight.rb +28 -0
- data/lib/seafoam/version.rb +5 -0
- data/seafoam.gemspec +20 -0
- data/spec/seafoam/annotators/fallback_spec.rb +69 -0
- data/spec/seafoam/annotators/graal_spec.rb +96 -0
- data/spec/seafoam/annotators_spec.rb +61 -0
- data/spec/seafoam/bgv/bgv_parser_spec.rb +144 -0
- data/spec/seafoam/bgv/fixtures/not.bgv +1 -0
- data/spec/seafoam/bgv/fixtures/unsupported.bgv +1 -0
- data/spec/seafoam/binary/io_binary_reader_spec.rb +176 -0
- data/spec/seafoam/command_spec.rb +252 -0
- data/spec/seafoam/graph_spec.rb +172 -0
- data/spec/seafoam/graphviz_writer_spec.rb +63 -0
- data/spec/seafoam/spec_helpers.rb +30 -0
- data/spec/seafoam/spotlight_spec.rb +38 -0
- data/tools/render-all +36 -0
- metadata +238 -0
@@ -0,0 +1,30 @@
|
|
1
|
+
module Seafoam
|
2
|
+
module SpecHelpers
|
3
|
+
SAMPLE_BGV = [
|
4
|
+
'fib-java.bgv',
|
5
|
+
'fib-js.bgv',
|
6
|
+
'fib-ruby.bgv',
|
7
|
+
'matmult-java.bgv',
|
8
|
+
'matmult-ruby.bgv'
|
9
|
+
].map { |f| File.expand_path("../../examples/#{f}", __dir__) }
|
10
|
+
|
11
|
+
def self.example_graph(file, graph_index)
|
12
|
+
file = File.expand_path("../../examples/#{file}.bgv", __dir__)
|
13
|
+
parser = Seafoam::BGV::BGVParser.new(File.new(file))
|
14
|
+
parser.read_file_header
|
15
|
+
parser.skip_document_props
|
16
|
+
loop do
|
17
|
+
index, = parser.read_graph_preheader
|
18
|
+
raise unless index
|
19
|
+
|
20
|
+
if index == graph_index
|
21
|
+
parser.read_graph_header
|
22
|
+
break parser.read_graph
|
23
|
+
else
|
24
|
+
parser.skip_graph_header
|
25
|
+
parser.skip_graph
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'seafoam'
|
2
|
+
|
3
|
+
require 'rspec'
|
4
|
+
|
5
|
+
describe Seafoam::Spotlight do
|
6
|
+
before :each do
|
7
|
+
file = File.expand_path('../../examples/fib-java.bgv', __dir__)
|
8
|
+
parser = Seafoam::BGV::BGVParser.new(File.new(file))
|
9
|
+
parser.read_file_header
|
10
|
+
parser.skip_document_props
|
11
|
+
parser.read_graph_preheader
|
12
|
+
parser.read_graph_header
|
13
|
+
@graph = parser.read_graph
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'marks individual nodes as lit' do
|
17
|
+
spotlight = Seafoam::Spotlight.new(@graph)
|
18
|
+
spotlight.light @graph.nodes[13]
|
19
|
+
expect(@graph.nodes[13].props[:spotlight]).to eq 'lit'
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'marks surrounding nodes as shaded' do
|
23
|
+
spotlight = Seafoam::Spotlight.new(@graph)
|
24
|
+
spotlight.light @graph.nodes[13]
|
25
|
+
expect(@graph.nodes.values
|
26
|
+
.select { |n| n.props[:spotlight] == 'shaded' }
|
27
|
+
.map(&:id).sort).to eq [6, 12, 14, 18, 19, 20]
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'marks other nodes as hidden' do
|
31
|
+
spotlight = Seafoam::Spotlight.new(@graph)
|
32
|
+
spotlight.light @graph.nodes[13]
|
33
|
+
spotlight.shade
|
34
|
+
expect(@graph.nodes.values
|
35
|
+
.select { |n| n.props[:hidden] }
|
36
|
+
.map(&:id).sort).to eq [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 15, 16, 17, 21]
|
37
|
+
end
|
38
|
+
end
|
data/tools/render-all
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$LOAD_PATH.push File.expand_path('../lib', __dir__)
|
4
|
+
require 'seafoam'
|
5
|
+
|
6
|
+
config = Seafoam::Config.new
|
7
|
+
commands = Seafoam::Commands.new($stdout, config)
|
8
|
+
|
9
|
+
extra = {
|
10
|
+
'exampleArrayRead' => [42],
|
11
|
+
'exampleDoubleSynchronized' => [48, 49],
|
12
|
+
'exampleFieldRead' => [42],
|
13
|
+
'exampleFullEscape' => [33],
|
14
|
+
'exampleInstanceOfManyImpls' => [65],
|
15
|
+
'exampleInstanceOfOneImpl' => [65],
|
16
|
+
'exampleInterfaceCallOneImpl' => [9],
|
17
|
+
'exampleInterfaceCallManyImpls' => [9],
|
18
|
+
'exampleLocalSynchronized' => [33],
|
19
|
+
'exampleNoEscape' => [33],
|
20
|
+
'examplePartialEscape' => [33],
|
21
|
+
'exampleUnsafeRead' => [42]
|
22
|
+
}
|
23
|
+
|
24
|
+
Dir.glob(File.expand_path('../examples/java/*.bgv', __dir__)).each do |bgv|
|
25
|
+
basename = File.basename(bgv, '.bgv')
|
26
|
+
phases = [6]
|
27
|
+
phases.push(*(extra[basename] || []))
|
28
|
+
extra_options = []
|
29
|
+
if basename == 'exampleLocalVariablesState'
|
30
|
+
extra_options.push '--show-frame-state'
|
31
|
+
end
|
32
|
+
phases.each do |phase|
|
33
|
+
commands.run "#{bgv}:#{phase}", 'render', *extra_options, '--out', File.expand_path("../#{basename}@#{phase}.png", __dir__)
|
34
|
+
commands.run "#{bgv}:#{phase}", 'render', *extra_options, '--out', File.expand_path("../#{basename}@#{phase}.svg", __dir__)
|
35
|
+
end
|
36
|
+
end
|
metadata
ADDED
@@ -0,0 +1,238 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: seafoam
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.2'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Chris Seaton
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-11-03 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: benchmark-ips
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.7'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.8'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.8'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rubocop
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.74'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.74'
|
55
|
+
description:
|
56
|
+
email:
|
57
|
+
executables:
|
58
|
+
- seafoam
|
59
|
+
- bgv2json
|
60
|
+
- bgv2isabelle
|
61
|
+
extensions: []
|
62
|
+
extra_rdoc_files: []
|
63
|
+
files:
|
64
|
+
- ".github/probots.yml"
|
65
|
+
- ".github/workflows/rubocop.yml"
|
66
|
+
- ".github/workflows/specs.yml"
|
67
|
+
- ".gitignore"
|
68
|
+
- ".rubocop.yml"
|
69
|
+
- ".ruby-version"
|
70
|
+
- ".seafoam/config"
|
71
|
+
- CODE_OF_CONDUCT.md
|
72
|
+
- CONTRIBUTING.md
|
73
|
+
- Gemfile
|
74
|
+
- LICENSE.md
|
75
|
+
- README.md
|
76
|
+
- bin/bgv2isabelle
|
77
|
+
- bin/bgv2json
|
78
|
+
- bin/seafoam
|
79
|
+
- docs/annotators.md
|
80
|
+
- docs/bgv.md
|
81
|
+
- docs/getting-graphs.md
|
82
|
+
- docs/images/igv.png
|
83
|
+
- docs/images/seafoam.png
|
84
|
+
- docs/images/spotlight-igv.png
|
85
|
+
- docs/images/spotlight-seafoam.png
|
86
|
+
- examples/Fib.java
|
87
|
+
- examples/MatMult.java
|
88
|
+
- examples/fib-java.bgv
|
89
|
+
- examples/fib-js.bgv
|
90
|
+
- examples/fib-ruby.bgv
|
91
|
+
- examples/fib.js
|
92
|
+
- examples/fib.rb
|
93
|
+
- examples/identity.bgv
|
94
|
+
- examples/identity.rb
|
95
|
+
- examples/java/Irreducible.class
|
96
|
+
- examples/java/Irreducible.j
|
97
|
+
- examples/java/IrreducibleDecompiled.java
|
98
|
+
- examples/java/JavaExamples.java
|
99
|
+
- examples/java/exampleArithOperator.bgv
|
100
|
+
- examples/java/exampleArithOperator.cfg
|
101
|
+
- examples/java/exampleArrayAllocation.bgv
|
102
|
+
- examples/java/exampleArrayAllocation.cfg
|
103
|
+
- examples/java/exampleArrayRead.bgv
|
104
|
+
- examples/java/exampleArrayRead.cfg
|
105
|
+
- examples/java/exampleArrayWrite.bgv
|
106
|
+
- examples/java/exampleArrayWrite.cfg
|
107
|
+
- examples/java/exampleCatch.bgv
|
108
|
+
- examples/java/exampleCatch.cfg
|
109
|
+
- examples/java/exampleCompareOperator.bgv
|
110
|
+
- examples/java/exampleCompareOperator.cfg
|
111
|
+
- examples/java/exampleDoubleSynchronized.bgv
|
112
|
+
- examples/java/exampleDoubleSynchronized.cfg
|
113
|
+
- examples/java/exampleExactArith.bgv
|
114
|
+
- examples/java/exampleExactArith.cfg
|
115
|
+
- examples/java/exampleFieldRead.bgv
|
116
|
+
- examples/java/exampleFieldRead.cfg
|
117
|
+
- examples/java/exampleFieldWrite.bgv
|
118
|
+
- examples/java/exampleFieldWrite.cfg
|
119
|
+
- examples/java/exampleFor.bgv
|
120
|
+
- examples/java/exampleFor.cfg
|
121
|
+
- examples/java/exampleFullEscape.bgv
|
122
|
+
- examples/java/exampleFullEscape.cfg
|
123
|
+
- examples/java/exampleIf.bgv
|
124
|
+
- examples/java/exampleIf.cfg
|
125
|
+
- examples/java/exampleIfNeverTaken.bgv
|
126
|
+
- examples/java/exampleIfNeverTaken.cfg
|
127
|
+
- examples/java/exampleInstanceOfManyImpls.bgv
|
128
|
+
- examples/java/exampleInstanceOfManyImpls.cfg
|
129
|
+
- examples/java/exampleInstanceOfOneImpl.bgv
|
130
|
+
- examples/java/exampleInstanceOfOneImpl.cfg
|
131
|
+
- examples/java/exampleIntSwitch.bgv
|
132
|
+
- examples/java/exampleIntSwitch.cfg
|
133
|
+
- examples/java/exampleInterfaceCallManyImpls.bgv
|
134
|
+
- examples/java/exampleInterfaceCallManyImpls.cfg
|
135
|
+
- examples/java/exampleInterfaceCallOneImpl.bgv
|
136
|
+
- examples/java/exampleInterfaceCallOneImpl.cfg
|
137
|
+
- examples/java/exampleLocalInstanceOf.bgv
|
138
|
+
- examples/java/exampleLocalInstanceOf.cfg
|
139
|
+
- examples/java/exampleLocalSynchronized.bgv
|
140
|
+
- examples/java/exampleLocalSynchronized.cfg
|
141
|
+
- examples/java/exampleLocalVariables.bgv
|
142
|
+
- examples/java/exampleLocalVariables.cfg
|
143
|
+
- examples/java/exampleLocalVariablesState.bgv
|
144
|
+
- examples/java/exampleLocalVariablesState.cfg
|
145
|
+
- examples/java/exampleNestedWhile.bgv
|
146
|
+
- examples/java/exampleNestedWhile.cfg
|
147
|
+
- examples/java/exampleNestedWhileBreak.bgv
|
148
|
+
- examples/java/exampleNestedWhileBreak.cfg
|
149
|
+
- examples/java/exampleNoEscape.bgv
|
150
|
+
- examples/java/exampleNoEscape.cfg
|
151
|
+
- examples/java/exampleObjectAllocation.bgv
|
152
|
+
- examples/java/exampleObjectAllocation.cfg
|
153
|
+
- examples/java/examplePartialEscape.bgv
|
154
|
+
- examples/java/examplePartialEscape.cfg
|
155
|
+
- examples/java/examplePhi.bgv
|
156
|
+
- examples/java/examplePhi.cfg
|
157
|
+
- examples/java/exampleReducible.bgv
|
158
|
+
- examples/java/exampleReducible.cfg
|
159
|
+
- examples/java/exampleSimpleCall.bgv
|
160
|
+
- examples/java/exampleSimpleCall.cfg
|
161
|
+
- examples/java/exampleStamp.bgv
|
162
|
+
- examples/java/exampleStamp.cfg
|
163
|
+
- examples/java/exampleStaticCall.bgv
|
164
|
+
- examples/java/exampleStaticCall.cfg
|
165
|
+
- examples/java/exampleStringSwitch.bgv
|
166
|
+
- examples/java/exampleStringSwitch.cfg
|
167
|
+
- examples/java/exampleSynchronized.bgv
|
168
|
+
- examples/java/exampleSynchronized.cfg
|
169
|
+
- examples/java/exampleThrow.bgv
|
170
|
+
- examples/java/exampleThrow.cfg
|
171
|
+
- examples/java/exampleThrowCatch.bgv
|
172
|
+
- examples/java/exampleThrowCatch.cfg
|
173
|
+
- examples/java/exampleUnsafeRead.bgv
|
174
|
+
- examples/java/exampleUnsafeRead.cfg
|
175
|
+
- examples/java/exampleUnsafeWrite.bgv
|
176
|
+
- examples/java/exampleUnsafeWrite.cfg
|
177
|
+
- examples/java/exampleWhile.bgv
|
178
|
+
- examples/java/exampleWhile.cfg
|
179
|
+
- examples/java/exampleWhileBreak.bgv
|
180
|
+
- examples/java/exampleWhileBreak.cfg
|
181
|
+
- examples/matmult-java.bgv
|
182
|
+
- examples/matmult-ruby.bgv
|
183
|
+
- examples/matmult.rb
|
184
|
+
- examples/overflow.bgv
|
185
|
+
- examples/overflow.rb
|
186
|
+
- lib/seafoam.rb
|
187
|
+
- lib/seafoam/annotators.rb
|
188
|
+
- lib/seafoam/annotators/fallback.rb
|
189
|
+
- lib/seafoam/annotators/graal.rb
|
190
|
+
- lib/seafoam/bgv/bgv_parser.rb
|
191
|
+
- lib/seafoam/binary/binary_reader.rb
|
192
|
+
- lib/seafoam/binary/io_binary_reader.rb
|
193
|
+
- lib/seafoam/colors.rb
|
194
|
+
- lib/seafoam/commands.rb
|
195
|
+
- lib/seafoam/config.rb
|
196
|
+
- lib/seafoam/graph.rb
|
197
|
+
- lib/seafoam/graphviz_writer.rb
|
198
|
+
- lib/seafoam/spotlight.rb
|
199
|
+
- lib/seafoam/version.rb
|
200
|
+
- seafoam.gemspec
|
201
|
+
- spec/seafoam/annotators/fallback_spec.rb
|
202
|
+
- spec/seafoam/annotators/graal_spec.rb
|
203
|
+
- spec/seafoam/annotators_spec.rb
|
204
|
+
- spec/seafoam/bgv/bgv_parser_spec.rb
|
205
|
+
- spec/seafoam/bgv/fixtures/not.bgv
|
206
|
+
- spec/seafoam/bgv/fixtures/unsupported.bgv
|
207
|
+
- spec/seafoam/binary/io_binary_reader_spec.rb
|
208
|
+
- spec/seafoam/command_spec.rb
|
209
|
+
- spec/seafoam/graph_spec.rb
|
210
|
+
- spec/seafoam/graphviz_writer_spec.rb
|
211
|
+
- spec/seafoam/spec_helpers.rb
|
212
|
+
- spec/seafoam/spotlight_spec.rb
|
213
|
+
- tools/render-all
|
214
|
+
homepage: https://github.com/Shopify/seafoam
|
215
|
+
licenses:
|
216
|
+
- MIT
|
217
|
+
metadata: {}
|
218
|
+
post_install_message:
|
219
|
+
rdoc_options: []
|
220
|
+
require_paths:
|
221
|
+
- lib
|
222
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
223
|
+
requirements:
|
224
|
+
- - ">="
|
225
|
+
- !ruby/object:Gem::Version
|
226
|
+
version: 2.5.8
|
227
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
228
|
+
requirements:
|
229
|
+
- - ">="
|
230
|
+
- !ruby/object:Gem::Version
|
231
|
+
version: '0'
|
232
|
+
requirements: []
|
233
|
+
rubyforge_project:
|
234
|
+
rubygems_version: 2.7.6.2
|
235
|
+
signing_key:
|
236
|
+
specification_version: 4
|
237
|
+
summary: A tool for working with compiler graphs
|
238
|
+
test_files: []
|