class Ethereum::FastVM::CallData
Attributes
size[R]
Public Class Methods
new(parent_memory, offset=0, size=nil)
click to toggle source
# File lib/ethereum/fast_vm/call_data.rb, line 9 def initialize(parent_memory, offset=0, size=nil) @data = parent_memory @offset = offset @size = size || @data.size @rlimit = @offset + @size end
Public Instance Methods
extract32(i)
click to toggle source
# File lib/ethereum/fast_vm/call_data.rb, line 22 def extract32(i) return 0 if i >= @size right = [@offset+i+32, @rlimit].min o = @data.safe_slice(@offset+i...right) Utils.bytearray_to_int(o + [0]*(32-o.size)) end
extract_all()
click to toggle source
# File lib/ethereum/fast_vm/call_data.rb, line 16 def extract_all d = @data.safe_slice(@offset, @size) d += [0] * (@size - d.size) Utils.int_array_to_bytes(d) end
extract_copy(mem, memstart, datastart, size)
click to toggle source
# File lib/ethereum/fast_vm/call_data.rb, line 30 def extract_copy(mem, memstart, datastart, size) [size, @size-datastart].min.times do |i| mem[memstart+i] = @data[@offset + datastart + i] end ([0, [size, @size-datastart].min].max...size).each do |i| mem[memstart+i] = 0 end end