Module Ruva::VM::Class::Helpers
In: lib/ruva/class.rb

Non-core, but useful, methods for Class. This is mixed in to Class.

Methods

Public Instance methods

[Source]

     # File lib/ruva/class.rb, line 175
175:         def find_field(name, desc)
176:           if idx = field_lookup[name + desc]
177:             fields[idx]       
178:           end      
179:         end

[Source]

     # File lib/ruva/class.rb, line 171
171:         def find_field_idx(name, desc)
172:           field_lookup[name + desc]
173:         end

[Source]

     # File lib/ruva/class.rb, line 165
165:         def find_method(name, desc)
166:           if idx = method_lookup[name + desc]
167:             methods[idx]       
168:           end      
169:         end

[Source]

     # File lib/ruva/class.rb, line 161
161:         def find_method_idx(name, desc)
162:           method_lookup[name + desc]
163:         end

[Source]

     # File lib/ruva/class.rb, line 157
157:         def instof_class_names(vm)  
158:           @instof_class_names ||= instof_classes(vm).map { |c| c.name }
159:         end

Get all class names of which this class could be a valid instance. Order is this class first, followed by it‘s interfaces, followed by superclass, then it‘s interfaces, etc.

[Source]

     # File lib/ruva/class.rb, line 145
145:         def instof_classes(vm)          
146:           @instof_classes ||= begin
147:             clzs = []
148:           
149:             if sc = super_class(vm)
150:               clzs = sc.instof_classes(vm)
151:             end
152:             
153:             ([self] + interfaces.map { |i| vm.find_class(i).instof_classes(vm) }.flatten + clzs).uniq
154:           end
155:         end

Get (and cache) the superclass

[Source]

     # File lib/ruva/class.rb, line 135
135:         def super_class(vm)
136:           # TODO this needs to be retrofitted in many opcodes...
137:           if super_name
138:             @super_class ||= vm.find_class(super_name)
139:           end
140:         end

[Validate]