/src/erlv8_nif.erl

http://github.com/beamjs/erlv8 · Erlang · 53 lines · 41 code · 12 blank · 0 comment · 0 complexity · 5bd39c3f0748a453de48eceaf63bb962 MD5 · raw file

  1. -module(erlv8_nif).
  2. -on_load(init/0).
  3. -export([init/0, new_vm/0, set_server/2, global/2, context/1, new_context/1,
  4. tick/3, stop/2, kill/1]).
  5. -define(DEFAULT_PREEMPTION, 100).
  6. init() ->
  7. Preemption =
  8. case application:get_env(erlv8, preemption_ms) of
  9. {ok, V} ->
  10. V;
  11. _ ->
  12. ?DEFAULT_PREEMPTION
  13. end,
  14. case os:getenv("ERLV8_SO_PATH") of
  15. false ->
  16. case code:which(erlv8_nif) of
  17. Filename when is_list(Filename) ->
  18. erlang:load_nif(filename:join([filename:dirname(Filename),"../priv/erlv8_drv"]), Preemption);
  19. Err ->
  20. Err
  21. end;
  22. Path ->
  23. Filename = filename:join([Path,"erlv8_drv"]),
  24. erlang:load_nif(Filename,Preemption)
  25. end.
  26. new_vm() ->
  27. error(not_loaded).
  28. set_server(_VMObject,_Pid) ->
  29. error(not_loaded).
  30. context(_VMObject) ->
  31. error(not_loaded).
  32. new_context(_VMObject) ->
  33. error(not_loaded).
  34. global(_VMObject, _ContextObject) ->
  35. error(not_loaded).
  36. tick(_VMObject, _Ref, _Tick) ->
  37. error(not_loaded).
  38. stop(_VMObject, _Ref) ->
  39. error(not_loaded).
  40. kill(_VMObject) ->
  41. error(not_loaded).