Class: MiniRacer::Snapshot

Inherits:
Object
  • Object
show all
Defined in:
lib/mini_racer.rb,
lib/mini_racer/truffleruby.rb

Overview

‘size` and `warmup!` public methods are defined in the C class

Instance Method Summary collapse

Constructor Details

#initialize(str = '') ⇒ Snapshot

Returns a new instance of Snapshot.



425
426
427
428
429
430
431
432
433
434
435
436
437
438
# File 'lib/mini_racer.rb', line 425

def initialize(str = '')
  # ensure it first can load
  begin
    ctx = MiniRacer::Context.new
    ctx.eval(str)
  rescue MiniRacer::RuntimeError => e
    raise MiniRacer::SnapshotError.new, e.message, e.backtrace
  end

  @source = str

  # defined in the C class
  load(str)
end

Instance Method Details

#load(str) ⇒ Object

Raises:

  • (TypeError)


341
342
343
344
# File 'lib/mini_racer/truffleruby.rb', line 341

def load(str)
  raise TypeError, "wrong type argument #{str.class} (should be a string)" unless str.is_a?(String)
  # Intentionally noop since TruffleRuby mocks the snapshot API
end

#warmup!(src) ⇒ Object



440
441
442
443
444
445
446
447
448
449
450
451
452
453
# File 'lib/mini_racer.rb', line 440

def warmup!(src)
  # we have to do something here
  # we are bloating memory a bit but it is more correct
  # than hitting an exception when attempty to compile invalid source
  begin
    ctx = MiniRacer::Context.new
    ctx.eval(@source)
    ctx.eval(src)
  rescue MiniRacer::RuntimeError => e
    raise MiniRacer::SnapshotError.new, e.message, e.backtrace
  end

  warmup_unsafe!(src)
end

#warmup_unsafe!(src) ⇒ Object

Raises:

  • (TypeError)


346
347
348
349
350
351
# File 'lib/mini_racer/truffleruby.rb', line 346

def warmup_unsafe!(src)
  raise TypeError, "wrong type argument #{src.class} (should be a string)" unless src.is_a?(String)
  # Intentionally noop since TruffleRuby mocks the snapshot API
  # by replaying snapshot source before the first eval/call
  self
end