mini_racer 0.1.14 → 0.1.15

Sign up to get free protection for your applications and to get access to all the features.
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