mini_racer 0.1.14 → 0.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 53d1807f65d860a1321d3a7f67a619ac19eb85b2
4
- data.tar.gz: b2cd4481d6f6e83bd53d197b5e59d9725d2b2e89
3
+ metadata.gz: d6c94af48c76bdd1d4ce6744e81cf812192498d8
4
+ data.tar.gz: dd14708bbca74f0845ce37310fb4a7679326e7cb
5
5
  SHA512:
6
- metadata.gz: 4f8da52c573d97113036a15c754bf633aad04f45d5cf5ca5273e9be032ca0048c39fbddf0bc8065514364c5517e2d39c0a78dc8dc9289b24eb8bd6b4027b471a
7
- data.tar.gz: 83c98e5c6b95a439be8b33048991b83c7d9cbc4f00b6102a04b37318fdb22ab97582289f1ef4c518340250d2325d584a045f6a70c1de2616bfc8532535ee7f70
6
+ metadata.gz: 8982f3a4a7aa6c9f89a581099c48a2e694930f9e4f48beaf88cfaf38f9a21004b32fd5093937ffa0096ac4ebb725c7f99402928a0ab4b54153114fa81267d21b
7
+ data.tar.gz: f9219565baccdea2ce89be3e50012b204e4482296f83084517db0e996a4a6147050230f6afcebc4ba79e1b127aa3dcbe845962c3087c5dd3ec3b2e16970537f0
data/CHANGELOG CHANGED
@@ -1,3 +1,10 @@
1
+
2
+ 23-08-2017
3
+
4
+ - 0.1.15
5
+
6
+ - bump dependency of libv8 to 6.3
7
+
1
8
  23-08-2017
2
9
 
3
10
  - 0.1.14
@@ -53,9 +53,16 @@ typedef struct {
53
53
  Local<String>* filename;
54
54
  useconds_t timeout;
55
55
  EvalResult* result;
56
- long max_memory;
56
+ size_t max_memory;
57
57
  } EvalParams;
58
58
 
59
+ enum IsolateFlags {
60
+ IN_GVL,
61
+ DO_TERMINATE,
62
+ MEM_SOFTLIMIT_VALUE,
63
+ MEM_SOFTLIMIT_REACHED,
64
+ };
65
+
59
66
  static VALUE rb_eScriptTerminatedError;
60
67
  static VALUE rb_eV8OutOfMemoryError;
61
68
  static VALUE rb_eParseError;
@@ -109,16 +116,16 @@ static void init_v8() {
109
116
  }
110
117
 
111
118
  static void gc_callback(Isolate *isolate, GCType type, GCCallbackFlags flags) {
112
- if((bool)isolate->GetData(3)) return;
119
+ if((bool)isolate->GetData(MEM_SOFTLIMIT_REACHED)) return;
113
120
 
114
- long softlimit = *(long*) isolate->GetData(2);
121
+ size_t softlimit = *(size_t*) isolate->GetData(MEM_SOFTLIMIT_VALUE);
115
122
 
116
123
  HeapStatistics* stats = new HeapStatistics();
117
124
  isolate->GetHeapStatistics(stats);
118
- long used = stats->used_heap_size();
125
+ size_t used = stats->used_heap_size();
119
126
 
120
127
  if(used > softlimit) {
121
- isolate->SetData(3, (void*)true);
128
+ isolate->SetData(MEM_SOFTLIMIT_REACHED, (void*)true);
122
129
  V8::TerminateExecution(isolate);
123
130
  }
124
131
  }
@@ -138,13 +145,13 @@ nogvl_context_eval(void* arg) {
138
145
  v8::ScriptOrigin *origin = NULL;
139
146
 
140
147
  // in gvl flag
141
- isolate->SetData(0, (void*)false);
148
+ isolate->SetData(IN_GVL, (void*)false);
142
149
  // terminate ASAP
143
- isolate->SetData(1, (void*)false);
150
+ isolate->SetData(DO_TERMINATE, (void*)false);
144
151
  // Memory softlimit
145
- isolate->SetData(2, (void*)false);
152
+ isolate->SetData(MEM_SOFTLIMIT_VALUE, (void*)false);
146
153
  // Memory softlimit hit flag
147
- isolate->SetData(3, (void*)false);
154
+ isolate->SetData(MEM_SOFTLIMIT_REACHED, (void*)false);
148
155
 
149
156
  MaybeLocal<Script> parsed_script;
150
157
 
@@ -170,7 +177,7 @@ nogvl_context_eval(void* arg) {
170
177
  } else {
171
178
 
172
179
  if(eval_params->max_memory > 0) {
173
- isolate->SetData(2, &eval_params->max_memory);
180
+ isolate->SetData(MEM_SOFTLIMIT_VALUE, &eval_params->max_memory);
174
181
  isolate->AddGCEpilogueCallback(gc_callback);
175
182
  }
176
183
 
@@ -241,7 +248,7 @@ nogvl_context_eval(void* arg) {
241
248
  }
242
249
  }
243
250
 
244
- isolate->SetData(0, (void*)true);
251
+ isolate->SetData(IN_GVL, (void*)true);
245
252
 
246
253
 
247
254
  return NULL;
@@ -575,7 +582,7 @@ static VALUE rb_context_eval_unsafe(VALUE self, VALUE str, VALUE filename) {
575
582
 
576
583
  VALUE mem_softlimit = rb_iv_get(self, "@max_memory");
577
584
  if (mem_softlimit != Qnil) {
578
- eval_params.max_memory = (long)NUM2LONG(mem_softlimit);
585
+ eval_params.max_memory = (size_t)NUM2ULONG(mem_softlimit);
579
586
  }
580
587
 
581
588
  eval_result.message = NULL;
@@ -611,7 +618,7 @@ static VALUE rb_context_eval_unsafe(VALUE self, VALUE str, VALUE filename) {
611
618
  if (!eval_result.executed) {
612
619
  VALUE ruby_exception = rb_iv_get(self, "@current_exception");
613
620
  if (ruby_exception == Qnil) {
614
- bool mem_softlimit_reached = (bool)isolate->GetData(3);
621
+ bool mem_softlimit_reached = (bool)isolate->GetData(MEM_SOFTLIMIT_REACHED);
615
622
  // If we were terminated or have the memory softlimit flag set
616
623
  if(eval_result.terminated || mem_softlimit_reached) {
617
624
  ruby_exception = mem_softlimit_reached ? rb_eV8OutOfMemoryError : rb_eScriptTerminatedError;
@@ -725,7 +732,7 @@ gvl_ruby_callback(void* data) {
725
732
  callback_data.args = ruby_args;
726
733
  callback_data.failed = false;
727
734
 
728
- if ((bool)args->GetIsolate()->GetData(1) == true) {
735
+ if ((bool)args->GetIsolate()->GetData(DO_TERMINATE) == true) {
729
736
  args->GetIsolate()->ThrowException(String::NewFromUtf8(args->GetIsolate(), "Terminated execution during transition from Ruby to JS"));
730
737
  V8::TerminateExecution(args->GetIsolate());
731
738
  return NULL;
@@ -749,7 +756,7 @@ gvl_ruby_callback(void* data) {
749
756
  xfree(ruby_args);
750
757
  }
751
758
 
752
- if ((bool)args->GetIsolate()->GetData(1) == true) {
759
+ if ((bool)args->GetIsolate()->GetData(DO_TERMINATE) == true) {
753
760
  Isolate* isolate = args->GetIsolate();
754
761
  V8::TerminateExecution(isolate);
755
762
  }
@@ -759,12 +766,14 @@ gvl_ruby_callback(void* data) {
759
766
 
760
767
  static void ruby_callback(const FunctionCallbackInfo<Value>& args) {
761
768
 
762
- bool has_gvl = (bool)args.GetIsolate()->GetData(0);
769
+ bool has_gvl = (bool)args.GetIsolate()->GetData(IN_GVL);
763
770
 
764
771
  if(has_gvl) {
765
772
  gvl_ruby_callback((void*)&args);
766
773
  } else {
774
+ args.GetIsolate()->SetData(IN_GVL, (void*)true);
767
775
  rb_thread_call_with_gvl(gvl_ruby_callback, (void*)(&args));
776
+ args.GetIsolate()->SetData(IN_GVL, (void*)false);
768
777
  }
769
778
  }
770
779
 
@@ -1022,7 +1031,7 @@ rb_context_stop(VALUE self) {
1022
1031
  Isolate* isolate = context_info->isolate_info->isolate;
1023
1032
 
1024
1033
  // flag for termination
1025
- isolate->SetData(1, (void*)true);
1034
+ isolate->SetData(DO_TERMINATE, (void*)true);
1026
1035
 
1027
1036
  V8::TerminateExecution(isolate);
1028
1037
  rb_funcall(self, rb_intern("stop_attached"), 0);
@@ -148,7 +148,9 @@ module MiniRacer
148
148
  @max_memory = nil
149
149
  @current_exception = nil
150
150
  @timeout = options[:timeout]
151
- @max_memory = options[:max_memory]
151
+ if options[:max_memory].is_a?(Numeric) && options[:max_memory] > 0
152
+ @max_memory = options[:max_memory]
153
+ end
152
154
  @isolate = options[:isolate] || Isolate.new(options[:snapshot])
153
155
  @disposed = false
154
156
 
@@ -1,3 +1,3 @@
1
1
  module MiniRacer
2
- VERSION = "0.1.14"
2
+ VERSION = "0.1.15"
3
3
  end
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency "minitest", "~> 5.0"
26
26
  spec.add_development_dependency "rake-compiler"
27
27
 
28
- spec.add_dependency 'libv8', '~> 5.9'
28
+ spec.add_dependency 'libv8', '~> 6.3'
29
29
  spec.require_paths = ["lib", "ext"]
30
30
 
31
31
  spec.extensions = ["ext/mini_racer_extension/extconf.rb"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini_racer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.14
4
+ version: 0.1.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-08-24 00:00:00.000000000 Z
11
+ date: 2017-12-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '5.9'
75
+ version: '6.3'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '5.9'
82
+ version: '6.3'
83
83
  description: Minimal embedded v8 engine for Ruby
84
84
  email:
85
85
  - sam.saffron@gmail.com
@@ -124,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
124
  version: '0'
125
125
  requirements: []
126
126
  rubyforge_project:
127
- rubygems_version: 2.5.2
127
+ rubygems_version: 2.6.13
128
128
  signing_key:
129
129
  specification_version: 4
130
130
  summary: Minimal embedded v8 for Ruby