libv8 5.0.71.48.3-universal-darwin-15 → 5.1.281.59.1-universal-darwin-15
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ext/libv8/location.rb +12 -9
- data/ext/libv8/paths.rb +1 -1
- data/lib/libv8/version.rb +1 -1
- data/vendor/v8/include/libplatform/libplatform.h +1 -1
- data/vendor/v8/include/v8-debug.h +10 -4
- data/vendor/v8/include/v8-experimental.h +1 -1
- data/vendor/v8/include/v8-platform.h +3 -3
- data/vendor/v8/include/v8-version.h +3 -3
- data/vendor/v8/include/v8.h +226 -29
- data/vendor/v8/include/v8config.h +1 -7
- data/vendor/v8/out/x64.release/libv8_base.a +0 -0
- data/vendor/v8/out/x64.release/libv8_libbase.a +0 -0
- data/vendor/v8/out/x64.release/libv8_libplatform.a +0 -0
- data/vendor/v8/out/x64.release/libv8_nosnapshot.a +0 -0
- data/vendor/v8/out/x64.release/libv8_snapshot.a +0 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a2a1a6de5f053b3340d85b91498991596eccfe05
|
4
|
+
data.tar.gz: ef18f25282a9e6df7d8cdb2236fd8a596b4c5936
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a3b8b83f1312fb121d6db0c7dfb59641aa445ff64fe2c39a38e5b75df16a454a5f53af062a814c49b21348841239d81cc6476b32e6c0a524985778abe8ed7af2
|
7
|
+
data.tar.gz: 8ffd75c8476704ea0095d5865a2b8bd34543685a3ad8b4158c3ea3de9f97391208320b64c72db6f9b07cfa8d04f905a5f404b8bbef1838a47b2320a5579fa243
|
data/ext/libv8/location.rb
CHANGED
@@ -26,21 +26,24 @@ module Libv8
|
|
26
26
|
verify_installation!
|
27
27
|
return exit_status
|
28
28
|
end
|
29
|
+
|
29
30
|
def configure(context = MkmfContext.new)
|
30
|
-
context.incflags.insert 0, Libv8::Paths.include_paths.map{|p| "-I#{p}"}.join(" ") + " "
|
31
|
+
context.incflags.insert 0, Libv8::Paths.include_paths.map{ |p| "-I#{p}" }.join(" ") + " "
|
31
32
|
context.ldflags.insert 0, Libv8::Paths.object_paths.join(" ") + " "
|
32
33
|
end
|
33
34
|
|
34
35
|
def verify_installation!
|
35
36
|
include_paths = Libv8::Paths.include_paths
|
36
|
-
unless include_paths.detect { |p| Pathname(p).join('
|
37
|
-
fail HeaderNotFound, "Unable to locate '
|
37
|
+
unless include_paths.detect { |p| Pathname(p).join('v8.h').exist? }
|
38
|
+
fail HeaderNotFound, "Unable to locate 'v8.h' in the libv8 header paths: #{include_paths.inspect}"
|
38
39
|
end
|
39
40
|
Libv8::Paths.object_paths.each do |p|
|
40
41
|
fail ArchiveNotFound, p unless File.exist? p
|
41
42
|
end
|
42
43
|
end
|
44
|
+
|
43
45
|
class HeaderNotFound < StandardError; end
|
46
|
+
|
44
47
|
class ArchiveNotFound < StandardError
|
45
48
|
def initialize(filename)
|
46
49
|
super "libv8 did not install properly, expected binary v8 archive '#{filename}'to exist, but it was not found"
|
@@ -59,14 +62,14 @@ module Libv8
|
|
59
62
|
class NotFoundError < StandardError
|
60
63
|
def initialize(*args)
|
61
64
|
super(<<-EOS)
|
62
|
-
By using --with-system-v8, you have chosen to use the version
|
63
|
-
of V8 found on your system and *not* the one that is bundled with
|
64
|
-
the libv8 rubygem.
|
65
|
+
By using --with-system-v8, you have chosen to use the version
|
66
|
+
of V8 found on your system and *not* the one that is bundled with
|
67
|
+
the libv8 rubygem.
|
65
68
|
|
66
|
-
However, your system version of v8 could not be located.
|
69
|
+
However, your system version of v8 could not be located.
|
67
70
|
|
68
|
-
Please make sure your system version of v8 that is compatible
|
69
|
-
with #{Libv8::VERSION} installed. You may need to use the
|
71
|
+
Please make sure your system version of v8 that is compatible
|
72
|
+
with #{Libv8::VERSION} installed. You may need to use the
|
70
73
|
--with-v8-dir option if it is installed in a non-standard location
|
71
74
|
EOS
|
72
75
|
end
|
data/ext/libv8/paths.rb
CHANGED
data/lib/libv8/version.rb
CHANGED
@@ -18,13 +18,11 @@ enum DebugEvent {
|
|
18
18
|
Exception = 2,
|
19
19
|
NewFunction = 3,
|
20
20
|
BeforeCompile = 4,
|
21
|
-
AfterCompile
|
21
|
+
AfterCompile = 5,
|
22
22
|
CompileError = 6,
|
23
|
-
|
24
|
-
AsyncTaskEvent = 8,
|
23
|
+
AsyncTaskEvent = 7,
|
25
24
|
};
|
26
25
|
|
27
|
-
|
28
26
|
class V8_EXPORT Debug {
|
29
27
|
public:
|
30
28
|
/**
|
@@ -276,6 +274,14 @@ class V8_EXPORT Debug {
|
|
276
274
|
*/
|
277
275
|
static MaybeLocal<Array> GetInternalProperties(Isolate* isolate,
|
278
276
|
Local<Value> value);
|
277
|
+
|
278
|
+
/**
|
279
|
+
* Defines if the ES2015 tail call elimination feature is enabled or not.
|
280
|
+
* The change of this flag triggers deoptimization of all functions that
|
281
|
+
* contain calls at tail position.
|
282
|
+
*/
|
283
|
+
static bool IsTailCallEliminationEnabled(Isolate* isolate);
|
284
|
+
static void SetTailCallEliminationEnabled(Isolate* isolate, bool enabled);
|
279
285
|
};
|
280
286
|
|
281
287
|
|
@@ -152,9 +152,9 @@ class Platform {
|
|
152
152
|
*/
|
153
153
|
virtual uint64_t AddTraceEvent(
|
154
154
|
char phase, const uint8_t* category_enabled_flag, const char* name,
|
155
|
-
uint64_t id, uint64_t bind_id, int32_t num_args,
|
156
|
-
const
|
157
|
-
unsigned int flags) {
|
155
|
+
const char* scope, uint64_t id, uint64_t bind_id, int32_t num_args,
|
156
|
+
const char** arg_names, const uint8_t* arg_types,
|
157
|
+
const uint64_t* arg_values, unsigned int flags) {
|
158
158
|
return 0;
|
159
159
|
}
|
160
160
|
|
@@ -9,9 +9,9 @@
|
|
9
9
|
// NOTE these macros are used by some of the tool scripts and the build
|
10
10
|
// system so their names cannot be changed without changing the scripts.
|
11
11
|
#define V8_MAJOR_VERSION 5
|
12
|
-
#define V8_MINOR_VERSION
|
13
|
-
#define V8_BUILD_NUMBER
|
14
|
-
#define V8_PATCH_LEVEL
|
12
|
+
#define V8_MINOR_VERSION 1
|
13
|
+
#define V8_BUILD_NUMBER 281
|
14
|
+
#define V8_PATCH_LEVEL 59
|
15
15
|
|
16
16
|
// Use 1 for candidates and 0 otherwise.
|
17
17
|
// (Boolean macro values are not supported by all preprocessors.)
|
data/vendor/v8/include/v8.h
CHANGED
@@ -18,6 +18,8 @@
|
|
18
18
|
#include <stddef.h>
|
19
19
|
#include <stdint.h>
|
20
20
|
#include <stdio.h>
|
21
|
+
#include <utility>
|
22
|
+
#include <vector>
|
21
23
|
|
22
24
|
#include "v8-version.h" // NOLINT(build/include)
|
23
25
|
#include "v8config.h" // NOLINT(build/include)
|
@@ -328,6 +330,8 @@ class Local {
|
|
328
330
|
template <class F1, class F2, class F3>
|
329
331
|
friend class PersistentValueMapBase;
|
330
332
|
template<class F1, class F2> friend class PersistentValueVector;
|
333
|
+
template <class F>
|
334
|
+
friend class ReturnValue;
|
331
335
|
|
332
336
|
explicit V8_INLINE Local(T* that) : val_(that) {}
|
333
337
|
V8_INLINE static Local<T> New(Isolate* isolate, T* that);
|
@@ -593,6 +597,13 @@ template <class T> class PersistentBase {
|
|
593
597
|
// TODO(dcarney): remove this.
|
594
598
|
V8_INLINE void ClearWeak() { ClearWeak<void>(); }
|
595
599
|
|
600
|
+
/**
|
601
|
+
* Allows the embedder to tell the v8 garbage collector that a certain object
|
602
|
+
* is alive. Only allowed when the embedder is asked to trace its heap by
|
603
|
+
* EmbedderHeapTracer.
|
604
|
+
*/
|
605
|
+
V8_INLINE void RegisterExternalReference(Isolate* isolate);
|
606
|
+
|
596
607
|
/**
|
597
608
|
* Marks the reference to this object independent. Garbage collector is free
|
598
609
|
* to ignore any object groups containing this object. Weak callback for an
|
@@ -2628,6 +2639,10 @@ enum AccessControl {
|
|
2628
2639
|
PROHIBITS_OVERWRITING = 1 << 2
|
2629
2640
|
};
|
2630
2641
|
|
2642
|
+
/**
|
2643
|
+
* Integrity level for objects.
|
2644
|
+
*/
|
2645
|
+
enum class IntegrityLevel { kFrozen, kSealed };
|
2631
2646
|
|
2632
2647
|
/**
|
2633
2648
|
* A JavaScript object (ECMA-262, 4.3.3)
|
@@ -2819,6 +2834,11 @@ class V8_EXPORT Object : public Value {
|
|
2819
2834
|
*/
|
2820
2835
|
Local<String> GetConstructorName();
|
2821
2836
|
|
2837
|
+
/**
|
2838
|
+
* Sets the integrity level of the object.
|
2839
|
+
*/
|
2840
|
+
Maybe<bool> SetIntegrityLevel(Local<Context> context, IntegrityLevel level);
|
2841
|
+
|
2822
2842
|
/** Gets the number of internal fields for this Object. */
|
2823
2843
|
int InternalFieldCount();
|
2824
2844
|
|
@@ -3118,12 +3138,17 @@ class ReturnValue {
|
|
3118
3138
|
V8_INLINE void SetUndefined();
|
3119
3139
|
V8_INLINE void SetEmptyString();
|
3120
3140
|
// Convenience getter for Isolate
|
3121
|
-
V8_INLINE Isolate* GetIsolate();
|
3141
|
+
V8_INLINE Isolate* GetIsolate() const;
|
3122
3142
|
|
3123
3143
|
// Pointer setter: Uncompilable to prevent inadvertent misuse.
|
3124
3144
|
template <typename S>
|
3125
3145
|
V8_INLINE void Set(S* whatever);
|
3126
3146
|
|
3147
|
+
// Getter. Creates a new Local<> so it comes with a certain performance
|
3148
|
+
// hit. If the ReturnValue was not yet set, this will return the undefined
|
3149
|
+
// value.
|
3150
|
+
V8_INLINE Local<Value> Get() const;
|
3151
|
+
|
3127
3152
|
private:
|
3128
3153
|
template<class F> friend class ReturnValue;
|
3129
3154
|
template<class F> friend class FunctionCallbackInfo;
|
@@ -4886,7 +4911,6 @@ V8_INLINE Local<Primitive> Null(Isolate* isolate);
|
|
4886
4911
|
V8_INLINE Local<Boolean> True(Isolate* isolate);
|
4887
4912
|
V8_INLINE Local<Boolean> False(Isolate* isolate);
|
4888
4913
|
|
4889
|
-
|
4890
4914
|
/**
|
4891
4915
|
* A set of constraints that specifies the limits of the runtime's memory use.
|
4892
4916
|
* You must set the heap size before initializing the VM - the size cannot be
|
@@ -4895,6 +4919,9 @@ V8_INLINE Local<Boolean> False(Isolate* isolate);
|
|
4895
4919
|
* If you are using threads then you should hold the V8::Locker lock while
|
4896
4920
|
* setting the stack limit and you must set a non-default stack limit separately
|
4897
4921
|
* for each thread.
|
4922
|
+
*
|
4923
|
+
* The arguments for set_max_semi_space_size, set_max_old_space_size,
|
4924
|
+
* set_max_executable_size, set_code_range_size specify limits in MB.
|
4898
4925
|
*/
|
4899
4926
|
class V8_EXPORT ResourceConstraints {
|
4900
4927
|
public:
|
@@ -4913,17 +4940,23 @@ class V8_EXPORT ResourceConstraints {
|
|
4913
4940
|
uint64_t virtual_memory_limit);
|
4914
4941
|
|
4915
4942
|
int max_semi_space_size() const { return max_semi_space_size_; }
|
4916
|
-
void set_max_semi_space_size(int
|
4943
|
+
void set_max_semi_space_size(int limit_in_mb) {
|
4944
|
+
max_semi_space_size_ = limit_in_mb;
|
4945
|
+
}
|
4917
4946
|
int max_old_space_size() const { return max_old_space_size_; }
|
4918
|
-
void set_max_old_space_size(int
|
4947
|
+
void set_max_old_space_size(int limit_in_mb) {
|
4948
|
+
max_old_space_size_ = limit_in_mb;
|
4949
|
+
}
|
4919
4950
|
int max_executable_size() const { return max_executable_size_; }
|
4920
|
-
void set_max_executable_size(int
|
4951
|
+
void set_max_executable_size(int limit_in_mb) {
|
4952
|
+
max_executable_size_ = limit_in_mb;
|
4953
|
+
}
|
4921
4954
|
uint32_t* stack_limit() const { return stack_limit_; }
|
4922
4955
|
// Sets an address beyond which the VM's stack may not grow.
|
4923
4956
|
void set_stack_limit(uint32_t* value) { stack_limit_ = value; }
|
4924
4957
|
size_t code_range_size() const { return code_range_size_; }
|
4925
|
-
void set_code_range_size(size_t
|
4926
|
-
code_range_size_ =
|
4958
|
+
void set_code_range_size(size_t limit_in_mb) {
|
4959
|
+
code_range_size_ = limit_in_mb;
|
4927
4960
|
}
|
4928
4961
|
|
4929
4962
|
private:
|
@@ -5047,9 +5080,57 @@ class PromiseRejectMessage {
|
|
5047
5080
|
|
5048
5081
|
typedef void (*PromiseRejectCallback)(PromiseRejectMessage message);
|
5049
5082
|
|
5050
|
-
// ---
|
5083
|
+
// --- Microtasks Callbacks ---
|
5084
|
+
typedef void (*MicrotasksCompletedCallback)(Isolate*);
|
5051
5085
|
typedef void (*MicrotaskCallback)(void* data);
|
5052
5086
|
|
5087
|
+
|
5088
|
+
/**
|
5089
|
+
* Policy for running microtasks:
|
5090
|
+
* - explicit: microtasks are invoked with Isolate::RunMicrotasks() method;
|
5091
|
+
* - scoped: microtasks invocation is controlled by MicrotasksScope objects;
|
5092
|
+
* - auto: microtasks are invoked when the script call depth decrements
|
5093
|
+
* to zero.
|
5094
|
+
*/
|
5095
|
+
enum class MicrotasksPolicy { kExplicit, kScoped, kAuto };
|
5096
|
+
|
5097
|
+
|
5098
|
+
/**
|
5099
|
+
* This scope is used to control microtasks when kScopeMicrotasksInvocation
|
5100
|
+
* is used on Isolate. In this mode every non-primitive call to V8 should be
|
5101
|
+
* done inside some MicrotasksScope.
|
5102
|
+
* Microtasks are executed when topmost MicrotasksScope marked as kRunMicrotasks
|
5103
|
+
* exits.
|
5104
|
+
* kDoNotRunMicrotasks should be used to annotate calls not intended to trigger
|
5105
|
+
* microtasks.
|
5106
|
+
*/
|
5107
|
+
class V8_EXPORT MicrotasksScope {
|
5108
|
+
public:
|
5109
|
+
enum Type { kRunMicrotasks, kDoNotRunMicrotasks };
|
5110
|
+
|
5111
|
+
MicrotasksScope(Isolate* isolate, Type type);
|
5112
|
+
~MicrotasksScope();
|
5113
|
+
|
5114
|
+
/**
|
5115
|
+
* Runs microtasks if no kRunMicrotasks scope is currently active.
|
5116
|
+
*/
|
5117
|
+
static void PerformCheckpoint(Isolate* isolate);
|
5118
|
+
|
5119
|
+
/**
|
5120
|
+
* Returns current depth of nested kRunMicrotasks scopes.
|
5121
|
+
*/
|
5122
|
+
static int GetCurrentDepth(Isolate* isolate);
|
5123
|
+
|
5124
|
+
private:
|
5125
|
+
internal::Isolate* const isolate_;
|
5126
|
+
bool run_;
|
5127
|
+
|
5128
|
+
// Prevent copying.
|
5129
|
+
MicrotasksScope(const MicrotasksScope&);
|
5130
|
+
MicrotasksScope& operator=(const MicrotasksScope&);
|
5131
|
+
};
|
5132
|
+
|
5133
|
+
|
5053
5134
|
// --- Failed Access Check Callback ---
|
5054
5135
|
typedef void (*FailedAccessCheckCallback)(Local<Object> target,
|
5055
5136
|
AccessType type,
|
@@ -5121,6 +5202,7 @@ class V8_EXPORT HeapStatistics {
|
|
5121
5202
|
size_t total_available_size() { return total_available_size_; }
|
5122
5203
|
size_t used_heap_size() { return used_heap_size_; }
|
5123
5204
|
size_t heap_size_limit() { return heap_size_limit_; }
|
5205
|
+
size_t malloced_memory() { return malloced_memory_; }
|
5124
5206
|
size_t does_zap_garbage() { return does_zap_garbage_; }
|
5125
5207
|
|
5126
5208
|
private:
|
@@ -5130,6 +5212,7 @@ class V8_EXPORT HeapStatistics {
|
|
5130
5212
|
size_t total_available_size_;
|
5131
5213
|
size_t used_heap_size_;
|
5132
5214
|
size_t heap_size_limit_;
|
5215
|
+
size_t malloced_memory_;
|
5133
5216
|
bool does_zap_garbage_;
|
5134
5217
|
|
5135
5218
|
friend class V8;
|
@@ -5294,6 +5377,52 @@ class V8_EXPORT PersistentHandleVisitor { // NOLINT
|
|
5294
5377
|
uint16_t class_id) {}
|
5295
5378
|
};
|
5296
5379
|
|
5380
|
+
/**
|
5381
|
+
* Memory pressure level for the MemoryPressureNotification.
|
5382
|
+
* kNone hints V8 that there is no memory pressure.
|
5383
|
+
* kModerate hints V8 to speed up incremental garbage collection at the cost of
|
5384
|
+
* of higher latency due to garbage collection pauses.
|
5385
|
+
* kCritical hints V8 to free memory as soon as possible. Garbage collection
|
5386
|
+
* pauses at this level will be large.
|
5387
|
+
*/
|
5388
|
+
enum class MemoryPressureLevel { kNone, kModerate, kCritical };
|
5389
|
+
|
5390
|
+
/**
|
5391
|
+
* Interface for tracing through the embedder heap. During the v8 garbage
|
5392
|
+
* collection, v8 collects hidden fields of all potential wrappers, and at the
|
5393
|
+
* end of its marking phase iterates the collection and asks the embedder to
|
5394
|
+
* trace through its heap and call PersistentBase::RegisterExternalReference on
|
5395
|
+
* each js object reachable from any of the given wrappers.
|
5396
|
+
*
|
5397
|
+
* Before the first call to the TraceWrappableFrom function v8 will call
|
5398
|
+
* TraceRoots. When the v8 garbage collection is finished, v8 will call
|
5399
|
+
* ClearTracingMarks.
|
5400
|
+
*/
|
5401
|
+
class EmbedderHeapTracer {
|
5402
|
+
public:
|
5403
|
+
/**
|
5404
|
+
* V8 will call this method at the beginning of the gc cycle.
|
5405
|
+
*/
|
5406
|
+
virtual void TraceRoots(Isolate* isolate) = 0;
|
5407
|
+
|
5408
|
+
/**
|
5409
|
+
* V8 will call this method with internal fields of a potential wrappers.
|
5410
|
+
* Embedder is expected to trace its heap (synchronously) and call
|
5411
|
+
* PersistentBase::RegisterExternalReference() on all wrappers reachable from
|
5412
|
+
* any of the given wrappers.
|
5413
|
+
*/
|
5414
|
+
virtual void TraceWrappableFrom(
|
5415
|
+
Isolate* isolate,
|
5416
|
+
const std::vector<std::pair<void*, void*> >& internal_fields) = 0;
|
5417
|
+
/**
|
5418
|
+
* V8 will call this method at the end of the gc cycle. Allocation is *not*
|
5419
|
+
* allowed in the ClearTracingMarks.
|
5420
|
+
*/
|
5421
|
+
virtual void ClearTracingMarks(Isolate* isolate) = 0;
|
5422
|
+
|
5423
|
+
protected:
|
5424
|
+
virtual ~EmbedderHeapTracer() = default;
|
5425
|
+
};
|
5297
5426
|
|
5298
5427
|
/**
|
5299
5428
|
* Isolate represents an isolated instance of the V8 engine. V8 isolates have
|
@@ -5489,6 +5618,9 @@ class V8_EXPORT Isolate {
|
|
5489
5618
|
kArrayPrototypeConstructorModified = 26,
|
5490
5619
|
kArrayInstanceProtoModified = 27,
|
5491
5620
|
kArrayInstanceConstructorModified = 28,
|
5621
|
+
kLegacyFunctionDeclaration = 29,
|
5622
|
+
kRegExpPrototypeSourceGetter = 30,
|
5623
|
+
kRegExpPrototypeOldFlagGetter = 31,
|
5492
5624
|
|
5493
5625
|
// If you add new values here, you'll also need to update V8Initializer.cpp
|
5494
5626
|
// in Chromium.
|
@@ -5531,6 +5663,14 @@ class V8_EXPORT Isolate {
|
|
5531
5663
|
void SetAbortOnUncaughtExceptionCallback(
|
5532
5664
|
AbortOnUncaughtExceptionCallback callback);
|
5533
5665
|
|
5666
|
+
/**
|
5667
|
+
* Optional notification that the system is running low on memory.
|
5668
|
+
* V8 uses these notifications to guide heuristics.
|
5669
|
+
* It is allowed to call this function from another thread while
|
5670
|
+
* the isolate is executing long running JavaScript code.
|
5671
|
+
*/
|
5672
|
+
void MemoryPressureNotification(MemoryPressureLevel level);
|
5673
|
+
|
5534
5674
|
/**
|
5535
5675
|
* Methods below this point require holding a lock (using Locker) in
|
5536
5676
|
* a multi-threaded environment.
|
@@ -5752,6 +5892,11 @@ class V8_EXPORT Isolate {
|
|
5752
5892
|
*/
|
5753
5893
|
void RemoveGCPrologueCallback(GCCallback callback);
|
5754
5894
|
|
5895
|
+
/**
|
5896
|
+
* Sets the embedder heap tracer for the isolate.
|
5897
|
+
*/
|
5898
|
+
void SetEmbedderHeapTracer(EmbedderHeapTracer* tracer);
|
5899
|
+
|
5755
5900
|
/**
|
5756
5901
|
* Enables the host application to receive a notification after a
|
5757
5902
|
* garbage collection. Allocations are allowed in the callback function,
|
@@ -5888,17 +6033,39 @@ class V8_EXPORT Isolate {
|
|
5888
6033
|
*/
|
5889
6034
|
void EnqueueMicrotask(MicrotaskCallback microtask, void* data = NULL);
|
5890
6035
|
|
5891
|
-
|
5892
|
-
* Experimental: Controls
|
5893
|
-
*
|
6036
|
+
/**
|
6037
|
+
* Experimental: Controls how Microtasks are invoked. See MicrotasksPolicy
|
6038
|
+
* for details.
|
5894
6039
|
*/
|
5895
|
-
void
|
6040
|
+
void SetMicrotasksPolicy(MicrotasksPolicy policy);
|
6041
|
+
V8_DEPRECATE_SOON("Use SetMicrotasksPolicy",
|
6042
|
+
void SetAutorunMicrotasks(bool autorun));
|
5896
6043
|
|
5897
6044
|
/**
|
5898
|
-
* Experimental: Returns
|
5899
|
-
* run when the script call depth decrements to zero.
|
6045
|
+
* Experimental: Returns the policy controlling how Microtasks are invoked.
|
5900
6046
|
*/
|
5901
|
-
|
6047
|
+
MicrotasksPolicy GetMicrotasksPolicy() const;
|
6048
|
+
V8_DEPRECATE_SOON("Use GetMicrotasksPolicy",
|
6049
|
+
bool WillAutorunMicrotasks() const);
|
6050
|
+
|
6051
|
+
/**
|
6052
|
+
* Experimental: adds a callback to notify the host application after
|
6053
|
+
* microtasks were run. The callback is triggered by explicit RunMicrotasks
|
6054
|
+
* call or automatic microtasks execution (see SetAutorunMicrotasks).
|
6055
|
+
*
|
6056
|
+
* Callback will trigger even if microtasks were attempted to run,
|
6057
|
+
* but the microtasks queue was empty and no single microtask was actually
|
6058
|
+
* executed.
|
6059
|
+
*
|
6060
|
+
* Executing scriptsinside the callback will not re-trigger microtasks and
|
6061
|
+
* the callback.
|
6062
|
+
*/
|
6063
|
+
void AddMicrotasksCompletedCallback(MicrotasksCompletedCallback callback);
|
6064
|
+
|
6065
|
+
/**
|
6066
|
+
* Removes callback that was installed by AddMicrotasksCompletedCallback.
|
6067
|
+
*/
|
6068
|
+
void RemoveMicrotasksCompletedCallback(MicrotasksCompletedCallback callback);
|
5902
6069
|
|
5903
6070
|
/**
|
5904
6071
|
* Sets a callback for counting the number of times a feature of V8 is used.
|
@@ -6195,11 +6362,23 @@ class V8_EXPORT V8 {
|
|
6195
6362
|
static void SetSnapshotDataBlob(StartupData* startup_blob);
|
6196
6363
|
|
6197
6364
|
/**
|
6198
|
-
*
|
6365
|
+
* Bootstrap an isolate and a context from scratch to create a startup
|
6366
|
+
* snapshot. Include the side-effects of running the optional script.
|
6199
6367
|
* Returns { NULL, 0 } on failure.
|
6200
|
-
* The caller
|
6368
|
+
* The caller acquires ownership of the data array in the return value.
|
6201
6369
|
*/
|
6202
|
-
static StartupData CreateSnapshotDataBlob(const char*
|
6370
|
+
static StartupData CreateSnapshotDataBlob(const char* embedded_source = NULL);
|
6371
|
+
|
6372
|
+
/**
|
6373
|
+
* Bootstrap an isolate and a context from the cold startup blob, run the
|
6374
|
+
* warm-up script to trigger code compilation. The side effects are then
|
6375
|
+
* discarded. The resulting startup snapshot will include compiled code.
|
6376
|
+
* Returns { NULL, 0 } on failure.
|
6377
|
+
* The caller acquires ownership of the data array in the return value.
|
6378
|
+
* The argument startup blob is untouched.
|
6379
|
+
*/
|
6380
|
+
static StartupData WarmUpSnapshotDataBlob(StartupData cold_startup_blob,
|
6381
|
+
const char* warmup_source);
|
6203
6382
|
|
6204
6383
|
/**
|
6205
6384
|
* Adds a message listener.
|
@@ -6475,6 +6654,8 @@ class V8_EXPORT V8 {
|
|
6475
6654
|
static internal::Object** CopyPersistent(internal::Object** handle);
|
6476
6655
|
static void DisposeGlobal(internal::Object** global_handle);
|
6477
6656
|
typedef WeakCallbackData<Value, void>::Callback WeakCallback;
|
6657
|
+
static void RegisterExternallyReferencedObject(internal::Object** object,
|
6658
|
+
internal::Isolate* isolate);
|
6478
6659
|
static void MakeWeak(internal::Object** global_handle, void* data,
|
6479
6660
|
WeakCallback weak_callback);
|
6480
6661
|
static void MakeWeak(internal::Object** global_handle, void* data,
|
@@ -7149,7 +7330,7 @@ class Internals {
|
|
7149
7330
|
1 * kApiPointerSize + kApiIntSize;
|
7150
7331
|
static const int kStringResourceOffset = 3 * kApiPointerSize;
|
7151
7332
|
|
7152
|
-
static const int kOddballKindOffset =
|
7333
|
+
static const int kOddballKindOffset = 5 * kApiPointerSize;
|
7153
7334
|
static const int kForeignAddressOffset = kApiPointerSize;
|
7154
7335
|
static const int kJSObjectHeaderSize = 3 * kApiPointerSize;
|
7155
7336
|
static const int kFixedArrayHeaderSize = 2 * kApiPointerSize;
|
@@ -7168,11 +7349,12 @@ class Internals {
|
|
7168
7349
|
static const int kIsolateRootsOffset =
|
7169
7350
|
kAmountOfExternalAllocatedMemoryAtLastGlobalGCOffset + kApiInt64Size +
|
7170
7351
|
kApiPointerSize;
|
7171
|
-
static const int kUndefinedValueRootIndex =
|
7172
|
-
static const int
|
7173
|
-
static const int
|
7174
|
-
static const int
|
7175
|
-
static const int
|
7352
|
+
static const int kUndefinedValueRootIndex = 4;
|
7353
|
+
static const int kTheHoleValueRootIndex = 5;
|
7354
|
+
static const int kNullValueRootIndex = 6;
|
7355
|
+
static const int kTrueValueRootIndex = 7;
|
7356
|
+
static const int kFalseValueRootIndex = 8;
|
7357
|
+
static const int kEmptyStringRootIndex = 9;
|
7176
7358
|
|
7177
7359
|
// The external allocation limit should be below 256 MB on all architectures
|
7178
7360
|
// to avoid that resource-constrained embedders run low on memory.
|
@@ -7188,7 +7370,7 @@ class Internals {
|
|
7188
7370
|
static const int kNodeIsPartiallyDependentShift = 4;
|
7189
7371
|
static const int kNodeIsActiveShift = 4;
|
7190
7372
|
|
7191
|
-
static const int kJSObjectType =
|
7373
|
+
static const int kJSObjectType = 0xb8;
|
7192
7374
|
static const int kFirstNonstringType = 0x80;
|
7193
7375
|
static const int kOddballType = 0x83;
|
7194
7376
|
static const int kForeignType = 0x87;
|
@@ -7492,6 +7674,13 @@ P* PersistentBase<T>::ClearWeak() {
|
|
7492
7674
|
V8::ClearWeak(reinterpret_cast<internal::Object**>(this->val_)));
|
7493
7675
|
}
|
7494
7676
|
|
7677
|
+
template <class T>
|
7678
|
+
void PersistentBase<T>::RegisterExternalReference(Isolate* isolate) {
|
7679
|
+
if (IsEmpty()) return;
|
7680
|
+
V8::RegisterExternallyReferencedObject(
|
7681
|
+
reinterpret_cast<internal::Object**>(this->val_),
|
7682
|
+
reinterpret_cast<internal::Isolate*>(isolate));
|
7683
|
+
}
|
7495
7684
|
|
7496
7685
|
template <class T>
|
7497
7686
|
void PersistentBase<T>::MarkIndependent() {
|
@@ -7641,14 +7830,22 @@ void ReturnValue<T>::SetEmptyString() {
|
|
7641
7830
|
*value_ = *I::GetRoot(GetIsolate(), I::kEmptyStringRootIndex);
|
7642
7831
|
}
|
7643
7832
|
|
7644
|
-
template<typename T>
|
7645
|
-
Isolate* ReturnValue<T>::GetIsolate() {
|
7833
|
+
template <typename T>
|
7834
|
+
Isolate* ReturnValue<T>::GetIsolate() const {
|
7646
7835
|
// Isolate is always the pointer below the default value on the stack.
|
7647
7836
|
return *reinterpret_cast<Isolate**>(&value_[-2]);
|
7648
7837
|
}
|
7649
7838
|
|
7650
|
-
template<typename T>
|
7651
|
-
|
7839
|
+
template <typename T>
|
7840
|
+
Local<Value> ReturnValue<T>::Get() const {
|
7841
|
+
typedef internal::Internals I;
|
7842
|
+
if (*value_ == *I::GetRoot(GetIsolate(), I::kTheHoleValueRootIndex))
|
7843
|
+
return Local<Value>(*Undefined(GetIsolate()));
|
7844
|
+
return Local<Value>::New(GetIsolate(), reinterpret_cast<Value*>(value_));
|
7845
|
+
}
|
7846
|
+
|
7847
|
+
template <typename T>
|
7848
|
+
template <typename S>
|
7652
7849
|
void ReturnValue<T>::Set(S* whatever) {
|
7653
7850
|
// Uncompilable to prevent inadvertent misuse.
|
7654
7851
|
TYPE_CHECK(S*, Primitive);
|
@@ -266,13 +266,7 @@
|
|
266
266
|
# define V8_HAS_BUILTIN_FRAME_ADDRESS (V8_GNUC_PREREQ(2, 96, 0))
|
267
267
|
# define V8_HAS_BUILTIN_POPCOUNT (V8_GNUC_PREREQ(3, 4, 0))
|
268
268
|
|
269
|
-
|
270
|
-
// without warnings (functionality used by the macros below). These modes
|
271
|
-
// are detectable by checking whether __GXX_EXPERIMENTAL_CXX0X__ is defined or,
|
272
|
-
// more standardly, by checking whether __cplusplus has a C++11 or greater
|
273
|
-
// value. Current versions of g++ do not correctly set __cplusplus, so we check
|
274
|
-
// both for forward compatibility.
|
275
|
-
# if defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L
|
269
|
+
# if __cplusplus >= 201103L
|
276
270
|
# define V8_HAS_CXX11_ALIGNAS (V8_GNUC_PREREQ(4, 8, 0))
|
277
271
|
# define V8_HAS_CXX11_ALIGNOF (V8_GNUC_PREREQ(4, 8, 0))
|
278
272
|
# endif
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: libv8
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.1.281.59.1
|
5
5
|
platform: universal-darwin-15
|
6
6
|
authors:
|
7
7
|
- Charles Lowell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|