Class: MiniRacer::Snapshot

Inherits:
Object
  • Object
show all
Defined in:
lib/mini_racer.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.


404
405
406
407
408
409
410
411
412
413
414
415
416
417
# File 'lib/mini_racer.rb', line 404

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

#warmup!(src) ⇒ Object


419
420
421
422
423
424
425
426
427
428
429
430
431
432
# File 'lib/mini_racer.rb', line 419

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