libv8 3.16.14.19-universal-darwin-17 → 6.2.414.42.1-universal-darwin-17

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.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/ext/libv8/arch.rb +10 -33
  3. data/ext/libv8/location.rb +15 -7
  4. data/ext/libv8/paths.rb +3 -3
  5. data/lib/libv8/version.rb +1 -1
  6. data/vendor/v8/include/libplatform/libplatform-export.h +29 -0
  7. data/vendor/v8/include/libplatform/libplatform.h +83 -0
  8. data/vendor/v8/include/libplatform/v8-tracing.h +284 -0
  9. data/vendor/v8/include/v8-debug.h +104 -257
  10. data/vendor/v8/include/v8-inspector-protocol.h +13 -0
  11. data/vendor/v8/include/v8-inspector.h +267 -0
  12. data/vendor/v8/include/v8-platform.h +241 -0
  13. data/vendor/v8/include/v8-profiler.h +514 -185
  14. data/vendor/v8/include/v8-testing.h +5 -62
  15. data/vendor/v8/include/v8-util.h +655 -0
  16. data/vendor/v8/include/v8-value-serializer-version.h +24 -0
  17. data/vendor/v8/include/v8-version-string.h +33 -0
  18. data/vendor/v8/include/v8-version.h +20 -0
  19. data/vendor/v8/include/v8.h +8944 -3504
  20. data/vendor/v8/include/v8config.h +417 -0
  21. data/vendor/v8/out/x64.release/libv8_base.a +0 -0
  22. data/vendor/v8/out/x64.release/libv8_builtins_generators.a +0 -0
  23. data/vendor/v8/out/x64.release/libv8_builtins_setup.a +0 -0
  24. data/vendor/v8/out/x64.release/libv8_libbase.a +0 -0
  25. data/vendor/v8/out/x64.release/libv8_libplatform.a +0 -0
  26. data/vendor/v8/out/x64.release/libv8_libsampler.a +0 -0
  27. data/vendor/v8/out/x64.release/libv8_nosnapshot.a +0 -0
  28. data/vendor/v8/out/x64.release/libv8_snapshot.a +0 -0
  29. metadata +22 -23
  30. data/vendor/v8/include/v8-preparser.h +0 -118
  31. data/vendor/v8/include/v8stdint.h +0 -54
  32. data/vendor/v8/out/x64.release/libpreparser_lib.a +0 -0
@@ -1,71 +1,16 @@
1
1
  // Copyright 2008 the V8 project authors. All rights reserved.
2
- // Redistribution and use in source and binary forms, with or without
3
- // modification, are permitted provided that the following conditions are
4
- // met:
5
- //
6
- // * Redistributions of source code must retain the above copyright
7
- // notice, this list of conditions and the following disclaimer.
8
- // * Redistributions in binary form must reproduce the above
9
- // copyright notice, this list of conditions and the following
10
- // disclaimer in the documentation and/or other materials provided
11
- // with the distribution.
12
- // * Neither the name of Google Inc. nor the names of its
13
- // contributors may be used to endorse or promote products derived
14
- // from this software without specific prior written permission.
15
- //
16
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2
+ // Use of this source code is governed by a BSD-style license that can be
3
+ // found in the LICENSE file.
27
4
 
28
5
  #ifndef V8_V8_DEBUG_H_
29
6
  #define V8_V8_DEBUG_H_
30
7
 
31
- #include "v8.h"
32
-
33
- #ifdef _WIN32
34
- typedef int int32_t;
35
- typedef unsigned int uint32_t;
36
- typedef unsigned short uint16_t; // NOLINT
37
- typedef long long int64_t; // NOLINT
38
-
39
- // Setup for Windows DLL export/import. See v8.h in this directory for
40
- // information on how to build/use V8 as a DLL.
41
- #if defined(BUILDING_V8_SHARED) && defined(USING_V8_SHARED)
42
- #error both BUILDING_V8_SHARED and USING_V8_SHARED are set - please check the\
43
- build configuration to ensure that at most one of these is set
44
- #endif
45
-
46
- #ifdef BUILDING_V8_SHARED
47
- #define EXPORT __declspec(dllexport)
48
- #elif USING_V8_SHARED
49
- #define EXPORT __declspec(dllimport)
50
- #else
51
- #define EXPORT
52
- #endif
53
-
54
- #else // _WIN32
55
-
56
- // Setup for Linux shared library export. See v8.h in this directory for
57
- // information on how to build/use V8 as shared library.
58
- #if defined(__GNUC__) && (__GNUC__ >= 4) && defined(V8_SHARED)
59
- #define EXPORT __attribute__ ((visibility("default")))
60
- #else // defined(__GNUC__) && (__GNUC__ >= 4)
61
- #define EXPORT
62
- #endif // defined(__GNUC__) && (__GNUC__ >= 4)
63
-
64
- #endif // _WIN32
65
-
8
+ #include "v8.h" // NOLINT(build/include)
66
9
 
67
10
  /**
68
- * Debugger support for the V8 JavaScript engine.
11
+ * ATTENTION: The debugger API exposed by this file is deprecated and will be
12
+ * removed by the end of 2017. Please use the V8 inspector declared
13
+ * in include/v8-inspector.h instead.
69
14
  */
70
15
  namespace v8 {
71
16
 
@@ -73,15 +18,12 @@ namespace v8 {
73
18
  enum DebugEvent {
74
19
  Break = 1,
75
20
  Exception = 2,
76
- NewFunction = 3,
77
- BeforeCompile = 4,
78
- AfterCompile = 5,
79
- ScriptCollected = 6,
80
- BreakForCommand = 7
21
+ AfterCompile = 3,
22
+ CompileError = 4,
23
+ AsyncTaskEvent = 5,
81
24
  };
82
25
 
83
-
84
- class EXPORT Debug {
26
+ class V8_EXPORT Debug {
85
27
  public:
86
28
  /**
87
29
  * A client object passed to the v8 debugger whose ownership will be taken by
@@ -116,20 +58,20 @@ class EXPORT Debug {
116
58
  * callbacks as their content becomes invalid. These objects are from the
117
59
  * debugger event that started the debug message loop.
118
60
  */
119
- virtual Handle<Object> GetExecutionState() const = 0;
120
- virtual Handle<Object> GetEventData() const = 0;
61
+ virtual Local<Object> GetExecutionState() const = 0;
62
+ virtual Local<Object> GetEventData() const = 0;
121
63
 
122
64
  /**
123
65
  * Get the debugger protocol JSON.
124
66
  */
125
- virtual Handle<String> GetJSON() const = 0;
67
+ virtual Local<String> GetJSON() const = 0;
126
68
 
127
69
  /**
128
70
  * Get the context active when the debug event happened. Note this is not
129
71
  * the current active context as the JavaScript part of the debugger is
130
72
  * running in its own context which is entered at this point.
131
73
  */
132
- virtual Handle<Context> GetEventContext() const = 0;
74
+ virtual Local<Context> GetEventContext() const = 0;
133
75
 
134
76
  /**
135
77
  * Client data passed with the corresponding request if any. This is the
@@ -140,10 +82,11 @@ class EXPORT Debug {
140
82
  */
141
83
  virtual ClientData* GetClientData() const = 0;
142
84
 
85
+ virtual Isolate* GetIsolate() const = 0;
86
+
143
87
  virtual ~Message() {}
144
88
  };
145
89
 
146
-
147
90
  /**
148
91
  * An event details object passed to the debug event listener.
149
92
  */
@@ -158,244 +101,148 @@ class EXPORT Debug {
158
101
  * Access to execution state and event data of the debug event. Don't store
159
102
  * these cross callbacks as their content becomes invalid.
160
103
  */
161
- virtual Handle<Object> GetExecutionState() const = 0;
162
- virtual Handle<Object> GetEventData() const = 0;
104
+ virtual Local<Object> GetExecutionState() const = 0;
105
+ virtual Local<Object> GetEventData() const = 0;
163
106
 
164
107
  /**
165
108
  * Get the context active when the debug event happened. Note this is not
166
109
  * the current active context as the JavaScript part of the debugger is
167
110
  * running in its own context which is entered at this point.
168
111
  */
169
- virtual Handle<Context> GetEventContext() const = 0;
112
+ virtual Local<Context> GetEventContext() const = 0;
170
113
 
171
114
  /**
172
115
  * Client data passed with the corresponding callback when it was
173
116
  * registered.
174
117
  */
175
- virtual Handle<Value> GetCallbackData() const = 0;
118
+ virtual Local<Value> GetCallbackData() const = 0;
176
119
 
177
120
  /**
178
- * Client data passed to DebugBreakForCommand function. The
179
- * debugger takes ownership of the data and will delete it even if
180
- * there is no message handler.
121
+ * This is now a dummy that returns nullptr.
181
122
  */
182
123
  virtual ClientData* GetClientData() const = 0;
183
124
 
125
+ virtual Isolate* GetIsolate() const = 0;
126
+
184
127
  virtual ~EventDetails() {}
185
128
  };
186
129
 
187
-
188
- /**
189
- * Debug event callback function.
190
- *
191
- * \param event the type of the debug event that triggered the callback
192
- * (enum DebugEvent)
193
- * \param exec_state execution state (JavaScript object)
194
- * \param event_data event specific data (JavaScript object)
195
- * \param data value passed by the user to SetDebugEventListener
196
- */
197
- typedef void (*EventCallback)(DebugEvent event,
198
- Handle<Object> exec_state,
199
- Handle<Object> event_data,
200
- Handle<Value> data);
201
-
202
130
  /**
203
131
  * Debug event callback function.
204
132
  *
205
133
  * \param event_details object providing information about the debug event
206
134
  *
207
- * A EventCallback2 does not take possession of the event data,
208
- * and must not rely on the data persisting after the handler returns.
209
- */
210
- typedef void (*EventCallback2)(const EventDetails& event_details);
211
-
212
- /**
213
- * Debug message callback function.
214
- *
215
- * \param message the debug message handler message object
216
- * \param length length of the message
217
- * \param client_data the data value passed when registering the message handler
218
-
219
- * A MessageHandler does not take possession of the message string,
220
- * and must not rely on the data persisting after the handler returns.
221
- *
222
- * This message handler is deprecated. Use MessageHandler2 instead.
223
- */
224
- typedef void (*MessageHandler)(const uint16_t* message, int length,
225
- ClientData* client_data);
226
-
227
- /**
228
- * Debug message callback function.
229
- *
230
- * \param message the debug message handler message object
231
- *
232
- * A MessageHandler does not take possession of the message data,
135
+ * A EventCallback does not take possession of the event data,
233
136
  * and must not rely on the data persisting after the handler returns.
234
137
  */
235
- typedef void (*MessageHandler2)(const Message& message);
236
-
237
- /**
238
- * Debug host dispatch callback function.
239
- */
240
- typedef void (*HostDispatchHandler)();
138
+ typedef void (*EventCallback)(const EventDetails& event_details);
241
139
 
242
140
  /**
243
- * Callback function for the host to ensure debug messages are processed.
141
+ * This is now a no-op.
244
142
  */
245
- typedef void (*DebugMessageDispatchHandler)();
143
+ typedef void (*MessageHandler)(const Message& message);
246
144
 
247
- // Set a C debug event listener.
248
- static bool SetDebugEventListener(EventCallback that,
249
- Handle<Value> data = Handle<Value>());
250
- static bool SetDebugEventListener2(EventCallback2 that,
251
- Handle<Value> data = Handle<Value>());
252
-
253
- // Set a JavaScript debug event listener.
254
- static bool SetDebugEventListener(v8::Handle<v8::Object> that,
255
- Handle<Value> data = Handle<Value>());
145
+ V8_DEPRECATED("No longer supported", static bool SetDebugEventListener(
146
+ Isolate* isolate, EventCallback that,
147
+ Local<Value> data = Local<Value>()));
256
148
 
257
149
  // Schedule a debugger break to happen when JavaScript code is run
258
- // in the given isolate. If no isolate is provided the default
259
- // isolate is used.
260
- static void DebugBreak(Isolate* isolate = NULL);
150
+ // in the given isolate.
151
+ V8_DEPRECATED("No longer supported",
152
+ static void DebugBreak(Isolate* isolate));
261
153
 
262
154
  // Remove scheduled debugger break in given isolate if it has not
263
- // happened yet. If no isolate is provided the default isolate is
264
- // used.
265
- static void CancelDebugBreak(Isolate* isolate = NULL);
266
-
267
- // Break execution of JavaScript in the given isolate (this method
268
- // can be invoked from a non-VM thread) for further client command
269
- // execution on a VM thread. Client data is then passed in
270
- // EventDetails to EventCallback at the moment when the VM actually
271
- // stops. If no isolate is provided the default isolate is used.
272
- static void DebugBreakForCommand(ClientData* data = NULL,
273
- Isolate* isolate = NULL);
274
-
275
- // Message based interface. The message protocol is JSON. NOTE the message
276
- // handler thread is not supported any more parameter must be false.
277
- static void SetMessageHandler(MessageHandler handler,
278
- bool message_handler_thread = false);
279
- static void SetMessageHandler2(MessageHandler2 handler);
280
-
281
- // If no isolate is provided the default isolate is
282
- // used.
283
- static void SendCommand(const uint16_t* command, int length,
284
- ClientData* client_data = NULL,
285
- Isolate* isolate = NULL);
286
-
287
- // Dispatch interface.
288
- static void SetHostDispatchHandler(HostDispatchHandler handler,
289
- int period = 100);
155
+ // happened yet.
156
+ V8_DEPRECATED("No longer supported",
157
+ static void CancelDebugBreak(Isolate* isolate));
290
158
 
291
- /**
292
- * Register a callback function to be called when a debug message has been
293
- * received and is ready to be processed. For the debug messages to be
294
- * processed V8 needs to be entered, and in certain embedding scenarios this
295
- * callback can be used to make sure V8 is entered for the debug message to
296
- * be processed. Note that debug messages will only be processed if there is
297
- * a V8 break. This can happen automatically by using the option
298
- * --debugger-auto-break.
299
- * \param provide_locker requires that V8 acquires v8::Locker for you before
300
- * calling handler
301
- */
302
- static void SetDebugMessageDispatchHandler(
303
- DebugMessageDispatchHandler handler, bool provide_locker = false);
304
-
305
- /**
306
- * Run a JavaScript function in the debugger.
307
- * \param fun the function to call
308
- * \param data passed as second argument to the function
309
- * With this call the debugger is entered and the function specified is called
310
- * with the execution state as the first argument. This makes it possible to
311
- * get access to information otherwise not available during normal JavaScript
312
- * execution e.g. details on stack frames. Receiver of the function call will
313
- * be the debugger context global object, however this is a subject to change.
314
- * The following example shows a JavaScript function which when passed to
315
- * v8::Debug::Call will return the current line of JavaScript execution.
316
- *
317
- * \code
318
- * function frame_source_line(exec_state) {
319
- * return exec_state.frame(0).sourceLine();
320
- * }
321
- * \endcode
322
- */
323
- static Local<Value> Call(v8::Handle<v8::Function> fun,
324
- Handle<Value> data = Handle<Value>());
159
+ // Check if a debugger break is scheduled in the given isolate.
160
+ V8_DEPRECATED("No longer supported",
161
+ static bool CheckDebugBreak(Isolate* isolate));
325
162
 
326
- /**
327
- * Returns a mirror object for the given object.
328
- */
329
- static Local<Value> GetMirror(v8::Handle<v8::Value> obj);
330
-
331
- /**
332
- * Enable the V8 builtin debug agent. The debugger agent will listen on the
333
- * supplied TCP/IP port for remote debugger connection.
334
- * \param name the name of the embedding application
335
- * \param port the TCP/IP port to listen on
336
- * \param wait_for_connection whether V8 should pause on a first statement
337
- * allowing remote debugger to connect before anything interesting happened
338
- */
339
- static bool EnableAgent(const char* name, int port,
340
- bool wait_for_connection = false);
163
+ // This is now a no-op.
164
+ V8_DEPRECATED("No longer supported",
165
+ static void SetMessageHandler(Isolate* isolate,
166
+ MessageHandler handler));
341
167
 
342
- /**
343
- * Disable the V8 builtin debug agent. The TCP/IP connection will be closed.
344
- */
345
- static void DisableAgent();
168
+ // This is now a no-op.
169
+ V8_DEPRECATED("No longer supported",
170
+ static void SendCommand(Isolate* isolate,
171
+ const uint16_t* command, int length,
172
+ ClientData* client_data = NULL));
346
173
 
347
174
  /**
348
- * Makes V8 process all pending debug messages.
175
+ * Run a JavaScript function in the debugger.
176
+ * \param fun the function to call
177
+ * \param data passed as second argument to the function
178
+ * With this call the debugger is entered and the function specified is called
179
+ * with the execution state as the first argument. This makes it possible to
180
+ * get access to information otherwise not available during normal JavaScript
181
+ * execution e.g. details on stack frames. Receiver of the function call will
182
+ * be the debugger context global object, however this is a subject to change.
183
+ * The following example shows a JavaScript function which when passed to
184
+ * v8::Debug::Call will return the current line of JavaScript execution.
349
185
  *
350
- * From V8 point of view all debug messages come asynchronously (e.g. from
351
- * remote debugger) but they all must be handled synchronously: V8 cannot
352
- * do 2 things at one time so normal script execution must be interrupted
353
- * for a while.
354
- *
355
- * Generally when message arrives V8 may be in one of 3 states:
356
- * 1. V8 is running script; V8 will automatically interrupt and process all
357
- * pending messages (however auto_break flag should be enabled);
358
- * 2. V8 is suspended on debug breakpoint; in this state V8 is dedicated
359
- * to reading and processing debug messages;
360
- * 3. V8 is not running at all or has called some long-working C++ function;
361
- * by default it means that processing of all debug messages will be deferred
362
- * until V8 gets control again; however, embedding application may improve
363
- * this by manually calling this method.
364
- *
365
- * It makes sense to call this method whenever a new debug message arrived and
366
- * V8 is not already running. Method v8::Debug::SetDebugMessageDispatchHandler
367
- * should help with the former condition.
368
- *
369
- * Technically this method in many senses is equivalent to executing empty
370
- * script:
371
- * 1. It does nothing except for processing all pending debug messages.
372
- * 2. It should be invoked with the same precautions and from the same context
373
- * as V8 script would be invoked from, because:
374
- * a. with "evaluate" command it can do whatever normal script can do,
375
- * including all native calls;
376
- * b. no other thread should call V8 while this method is running
377
- * (v8::Locker may be used here).
378
- *
379
- * "Evaluate" debug command behavior currently is not specified in scope
380
- * of this method.
186
+ * \code
187
+ * function frame_source_line(exec_state) {
188
+ * return exec_state.frame(0).sourceLine();
189
+ * }
190
+ * \endcode
381
191
  */
382
- static void ProcessDebugMessages();
192
+ V8_DEPRECATED("No longer supported",
193
+ static MaybeLocal<Value> Call(
194
+ Local<Context> context, v8::Local<v8::Function> fun,
195
+ Local<Value> data = Local<Value>()));
196
+
197
+ // This is now a no-op.
198
+ V8_DEPRECATED("No longer supported",
199
+ static void ProcessDebugMessages(Isolate* isolate));
383
200
 
384
201
  /**
385
202
  * Debugger is running in its own context which is entered while debugger
386
203
  * messages are being dispatched. This is an explicit getter for this
387
204
  * debugger context. Note that the content of the debugger context is subject
388
- * to change.
205
+ * to change. The Context exists only when the debugger is active, i.e. at
206
+ * least one DebugEventListener or MessageHandler is set.
389
207
  */
390
- static Local<Context> GetDebugContext();
208
+ V8_DEPRECATED("Use v8-inspector",
209
+ static Local<Context> GetDebugContext(Isolate* isolate));
391
210
 
211
+ /**
212
+ * While in the debug context, this method returns the top-most non-debug
213
+ * context, if it exists.
214
+ */
215
+ V8_DEPRECATED(
216
+ "No longer supported",
217
+ static MaybeLocal<Context> GetDebuggedContext(Isolate* isolate));
392
218
 
393
219
  /**
394
220
  * Enable/disable LiveEdit functionality for the given Isolate
395
221
  * (default Isolate if not provided). V8 will abort if LiveEdit is
396
222
  * unexpectedly used. LiveEdit is enabled by default.
397
223
  */
398
- static void SetLiveEditEnabled(bool enable, Isolate* isolate = NULL);
224
+ V8_DEPRECATED("No longer supported",
225
+ static void SetLiveEditEnabled(Isolate* isolate, bool enable));
226
+
227
+ /**
228
+ * Returns array of internal properties specific to the value type. Result has
229
+ * the following format: [<name>, <value>,...,<name>, <value>]. Result array
230
+ * will be allocated in the current context.
231
+ */
232
+ V8_DEPRECATED("No longer supported",
233
+ static MaybeLocal<Array> GetInternalProperties(
234
+ Isolate* isolate, Local<Value> value));
235
+
236
+ /**
237
+ * Defines if the ES2015 tail call elimination feature is enabled or not.
238
+ * The change of this flag triggers deoptimization of all functions that
239
+ * contain calls at tail position.
240
+ */
241
+ V8_DEPRECATED("No longer supported",
242
+ static bool IsTailCallEliminationEnabled(Isolate* isolate));
243
+ V8_DEPRECATED("No longer supported",
244
+ static void SetTailCallEliminationEnabled(Isolate* isolate,
245
+ bool enabled));
399
246
  };
400
247
 
401
248