Skip to content

Commit 22e2288

Browse files
targositaloacasas
authored andcommitted
deps: ensure V8 5.4 ABI compatibility
V8 5.5 is not ABI-compatible with 5.4. Make the necessary changes to V8's header files so that native addons compiled against a previous version of node can still be loaded.. * Remove new fields from {Indexed|Named}PropertyHandlerConfiguration. * Revert "[tracing] Support ConvertableToTraceFormat argument type." * This reverts commit 4810f41a521227ccab4f231aa4a439d790428953 from V8. * Remove tests for getOwnPropertyDescriptor and defineProperty interceptors. PR-URL: #11029 Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Myles Borins <[email protected]>
1 parent fe2f058 commit 22e2288

15 files changed

+83
-902
lines changed

deps/v8/include/libplatform/v8-tracing.h

+18-28
Original file line numberDiff line numberDiff line change
@@ -36,22 +36,19 @@ class TraceObject {
3636

3737
TraceObject() {}
3838
~TraceObject();
39-
void Initialize(
40-
char phase, const uint8_t* category_enabled_flag, const char* name,
41-
const char* scope, uint64_t id, uint64_t bind_id, int num_args,
42-
const char** arg_names, const uint8_t* arg_types,
43-
const uint64_t* arg_values,
44-
std::unique_ptr<v8::ConvertableToTraceFormat>* arg_convertables,
45-
unsigned int flags);
39+
void Initialize(char phase, const uint8_t* category_enabled_flag,
40+
const char* name, const char* scope, uint64_t id,
41+
uint64_t bind_id, int num_args, const char** arg_names,
42+
const uint8_t* arg_types, const uint64_t* arg_values,
43+
unsigned int flags);
4644
void UpdateDuration();
47-
void InitializeForTesting(
48-
char phase, const uint8_t* category_enabled_flag, const char* name,
49-
const char* scope, uint64_t id, uint64_t bind_id, int num_args,
50-
const char** arg_names, const uint8_t* arg_types,
51-
const uint64_t* arg_values,
52-
std::unique_ptr<v8::ConvertableToTraceFormat>* arg_convertables,
53-
unsigned int flags, int pid, int tid, int64_t ts, int64_t tts,
54-
uint64_t duration, uint64_t cpu_duration);
45+
void InitializeForTesting(char phase, const uint8_t* category_enabled_flag,
46+
const char* name, const char* scope, uint64_t id,
47+
uint64_t bind_id, int num_args,
48+
const char** arg_names, const uint8_t* arg_types,
49+
const uint64_t* arg_values, unsigned int flags,
50+
int pid, int tid, int64_t ts, int64_t tts,
51+
uint64_t duration, uint64_t cpu_duration);
5552

5653
int pid() const { return pid_; }
5754
int tid() const { return tid_; }
@@ -67,9 +64,6 @@ class TraceObject {
6764
const char** arg_names() { return arg_names_; }
6865
uint8_t* arg_types() { return arg_types_; }
6966
ArgValue* arg_values() { return arg_values_; }
70-
std::unique_ptr<v8::ConvertableToTraceFormat>* arg_convertables() {
71-
return arg_convertables_;
72-
}
7367
unsigned int flags() const { return flags_; }
7468
int64_t ts() { return ts_; }
7569
int64_t tts() { return tts_; }
@@ -85,12 +79,10 @@ class TraceObject {
8579
const uint8_t* category_enabled_flag_;
8680
uint64_t id_;
8781
uint64_t bind_id_;
88-
int num_args_ = 0;
82+
int num_args_;
8983
const char* arg_names_[kTraceMaxNumArgs];
9084
uint8_t arg_types_[kTraceMaxNumArgs];
9185
ArgValue arg_values_[kTraceMaxNumArgs];
92-
std::unique_ptr<v8::ConvertableToTraceFormat>
93-
arg_convertables_[kTraceMaxNumArgs];
9486
char* parameter_copy_storage_ = nullptr;
9587
unsigned int flags_;
9688
int64_t ts_;
@@ -238,13 +230,11 @@ class TracingController {
238230
void Initialize(TraceBuffer* trace_buffer);
239231
const uint8_t* GetCategoryGroupEnabled(const char* category_group);
240232
static const char* GetCategoryGroupName(const uint8_t* category_enabled_flag);
241-
uint64_t AddTraceEvent(
242-
char phase, const uint8_t* category_enabled_flag, const char* name,
243-
const char* scope, uint64_t id, uint64_t bind_id, int32_t num_args,
244-
const char** arg_names, const uint8_t* arg_types,
245-
const uint64_t* arg_values,
246-
std::unique_ptr<v8::ConvertableToTraceFormat>* arg_convertables,
247-
unsigned int flags);
233+
uint64_t AddTraceEvent(char phase, const uint8_t* category_enabled_flag,
234+
const char* name, const char* scope, uint64_t id,
235+
uint64_t bind_id, int32_t num_args,
236+
const char** arg_names, const uint8_t* arg_types,
237+
const uint64_t* arg_values, unsigned int flags);
248238
void UpdateTraceEventDuration(const uint8_t* category_enabled_flag,
249239
const char* name, uint64_t handle);
250240

deps/v8/include/v8-platform.h

+9-44
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77

88
#include <stddef.h>
99
#include <stdint.h>
10-
#include <memory>
11-
#include <string>
1210

1311
namespace v8 {
1412

@@ -19,38 +17,24 @@ class Isolate;
1917
*/
2018
class Task {
2119
public:
22-
virtual ~Task() = default;
20+
virtual ~Task() {}
2321

2422
virtual void Run() = 0;
2523
};
2624

25+
2726
/**
28-
* An IdleTask represents a unit of work to be performed in idle time.
29-
* The Run method is invoked with an argument that specifies the deadline in
30-
* seconds returned by MonotonicallyIncreasingTime().
31-
* The idle task is expected to complete by this deadline.
32-
*/
27+
* An IdleTask represents a unit of work to be performed in idle time.
28+
* The Run method is invoked with an argument that specifies the deadline in
29+
* seconds returned by MonotonicallyIncreasingTime().
30+
* The idle task is expected to complete by this deadline.
31+
*/
3332
class IdleTask {
3433
public:
35-
virtual ~IdleTask() = default;
34+
virtual ~IdleTask() {}
3635
virtual void Run(double deadline_in_seconds) = 0;
3736
};
3837

39-
/**
40-
* The interface represents complex arguments to trace events.
41-
*/
42-
class ConvertableToTraceFormat {
43-
public:
44-
virtual ~ConvertableToTraceFormat() = default;
45-
46-
/**
47-
* Append the class info to the provided |out| string. The appended
48-
* data must be a valid JSON object. Strings must be properly quoted, and
49-
* escaped. There is no processing applied to the content after it is
50-
* appended.
51-
*/
52-
virtual void AppendAsTraceFormat(std::string* out) const = 0;
53-
};
5438

5539
/**
5640
* V8 Platform abstraction layer.
@@ -70,7 +54,7 @@ class Platform {
7054
kLongRunningTask
7155
};
7256

73-
virtual ~Platform() = default;
57+
virtual ~Platform() {}
7458

7559
/**
7660
* Gets the number of threads that are used to execute background tasks. Is
@@ -174,25 +158,6 @@ class Platform {
174158
return 0;
175159
}
176160

177-
/**
178-
* Adds a trace event to the platform tracing system. This function call is
179-
* usually the result of a TRACE_* macro from trace_event_common.h when
180-
* tracing and the category of the particular trace are enabled. It is not
181-
* advisable to call this function on its own; it is really only meant to be
182-
* used by the trace macros. The returned handle can be used by
183-
* UpdateTraceEventDuration to update the duration of COMPLETE events.
184-
*/
185-
virtual uint64_t AddTraceEvent(
186-
char phase, const uint8_t* category_enabled_flag, const char* name,
187-
const char* scope, uint64_t id, uint64_t bind_id, int32_t num_args,
188-
const char** arg_names, const uint8_t* arg_types,
189-
const uint64_t* arg_values,
190-
std::unique_ptr<ConvertableToTraceFormat>* arg_convertables,
191-
unsigned int flags) {
192-
return AddTraceEvent(phase, category_enabled_flag, name, scope, id, bind_id,
193-
num_args, arg_names, arg_types, arg_values, flags);
194-
}
195-
196161
/**
197162
* Sets the duration field of a COMPLETE trace event. It must be called with
198163
* the handle returned from AddTraceEvent().

deps/v8/include/v8.h

+2-48
Original file line numberDiff line numberDiff line change
@@ -5228,27 +5228,6 @@ struct NamedPropertyHandlerConfiguration {
52285228
query(query),
52295229
deleter(deleter),
52305230
enumerator(enumerator),
5231-
definer(0),
5232-
descriptor(0),
5233-
data(data),
5234-
flags(flags) {}
5235-
5236-
NamedPropertyHandlerConfiguration(
5237-
GenericNamedPropertyGetterCallback getter,
5238-
GenericNamedPropertySetterCallback setter,
5239-
GenericNamedPropertyDescriptorCallback descriptor,
5240-
GenericNamedPropertyDeleterCallback deleter,
5241-
GenericNamedPropertyEnumeratorCallback enumerator,
5242-
GenericNamedPropertyDefinerCallback definer,
5243-
Local<Value> data = Local<Value>(),
5244-
PropertyHandlerFlags flags = PropertyHandlerFlags::kNone)
5245-
: getter(getter),
5246-
setter(setter),
5247-
query(0),
5248-
deleter(deleter),
5249-
enumerator(enumerator),
5250-
definer(definer),
5251-
descriptor(descriptor),
52525231
data(data),
52535232
flags(flags) {}
52545233

@@ -5257,8 +5236,6 @@ struct NamedPropertyHandlerConfiguration {
52575236
GenericNamedPropertyQueryCallback query;
52585237
GenericNamedPropertyDeleterCallback deleter;
52595238
GenericNamedPropertyEnumeratorCallback enumerator;
5260-
GenericNamedPropertyDefinerCallback definer;
5261-
GenericNamedPropertyDescriptorCallback descriptor;
52625239
Local<Value> data;
52635240
PropertyHandlerFlags flags;
52645241
};
@@ -5279,27 +5256,6 @@ struct IndexedPropertyHandlerConfiguration {
52795256
query(query),
52805257
deleter(deleter),
52815258
enumerator(enumerator),
5282-
definer(0),
5283-
descriptor(0),
5284-
data(data),
5285-
flags(flags) {}
5286-
5287-
IndexedPropertyHandlerConfiguration(
5288-
IndexedPropertyGetterCallback getter,
5289-
IndexedPropertySetterCallback setter,
5290-
IndexedPropertyDescriptorCallback descriptor,
5291-
IndexedPropertyDeleterCallback deleter,
5292-
IndexedPropertyEnumeratorCallback enumerator,
5293-
IndexedPropertyDefinerCallback definer,
5294-
Local<Value> data = Local<Value>(),
5295-
PropertyHandlerFlags flags = PropertyHandlerFlags::kNone)
5296-
: getter(getter),
5297-
setter(setter),
5298-
query(0),
5299-
deleter(deleter),
5300-
enumerator(enumerator),
5301-
definer(definer),
5302-
descriptor(descriptor),
53035259
data(data),
53045260
flags(flags) {}
53055261

@@ -5308,8 +5264,6 @@ struct IndexedPropertyHandlerConfiguration {
53085264
IndexedPropertyQueryCallback query;
53095265
IndexedPropertyDeleterCallback deleter;
53105266
IndexedPropertyEnumeratorCallback enumerator;
5311-
IndexedPropertyDefinerCallback definer;
5312-
IndexedPropertyDescriptorCallback descriptor;
53135267
Local<Value> data;
53145268
PropertyHandlerFlags flags;
53155269
};
@@ -8289,8 +8243,8 @@ class Internals {
82898243
static const int kNodeIsPartiallyDependentShift = 4;
82908244
static const int kNodeIsActiveShift = 4;
82918245

8292-
static const int kJSObjectType = 0xb9;
8293-
static const int kJSApiObjectType = 0xb8;
8246+
static const int kJSObjectType = 0xb7;
8247+
static const int kJSApiObjectType = 0xb6;
82948248
static const int kFirstNonstringType = 0x80;
82958249
static const int kOddballType = 0x83;
82968250
static const int kForeignType = 0x87;

deps/v8/src/api.cc

+8-8
Original file line numberDiff line numberDiff line change
@@ -1579,8 +1579,8 @@ void ObjectTemplate::SetNamedPropertyHandler(
15791579
void ObjectTemplate::SetHandler(
15801580
const NamedPropertyHandlerConfiguration& config) {
15811581
ObjectTemplateSetNamedPropertyHandler(
1582-
this, config.getter, config.setter, config.query, config.descriptor,
1583-
config.deleter, config.enumerator, config.definer, config.data,
1582+
this, config.getter, config.setter, config.query, nullptr,
1583+
config.deleter, config.enumerator, nullptr, config.data,
15841584
config.flags);
15851585
}
15861586

@@ -1641,14 +1641,14 @@ void ObjectTemplate::SetAccessCheckCallbackAndHandler(
16411641
SET_FIELD_WRAPPED(info, set_callback, callback);
16421642
auto named_interceptor = CreateInterceptorInfo(
16431643
isolate, named_handler.getter, named_handler.setter, named_handler.query,
1644-
named_handler.descriptor, named_handler.deleter, named_handler.enumerator,
1645-
named_handler.definer, named_handler.data, named_handler.flags);
1644+
nullptr, named_handler.deleter, named_handler.enumerator,
1645+
nullptr, named_handler.data, named_handler.flags);
16461646
info->set_named_interceptor(*named_interceptor);
16471647
auto indexed_interceptor = CreateInterceptorInfo(
16481648
isolate, indexed_handler.getter, indexed_handler.setter,
1649-
indexed_handler.query, indexed_handler.descriptor,
1649+
indexed_handler.query, nullptr,
16501650
indexed_handler.deleter, indexed_handler.enumerator,
1651-
indexed_handler.definer, indexed_handler.data, indexed_handler.flags);
1651+
nullptr, indexed_handler.data, indexed_handler.flags);
16521652
info->set_indexed_interceptor(*indexed_interceptor);
16531653

16541654
if (data.IsEmpty()) {
@@ -1668,9 +1668,9 @@ void ObjectTemplate::SetHandler(
16681668
auto cons = EnsureConstructor(isolate, this);
16691669
EnsureNotInstantiated(cons, "v8::ObjectTemplate::SetHandler");
16701670
auto obj = CreateInterceptorInfo(isolate, config.getter, config.setter,
1671-
config.query, config.descriptor,
1671+
config.query, nullptr,
16721672
config.deleter, config.enumerator,
1673-
config.definer, config.data, config.flags);
1673+
nullptr, config.data, config.flags);
16741674
cons->set_indexed_property_handler(*obj);
16751675
}
16761676

deps/v8/src/libplatform/default-platform.cc

+3-4
Original file line numberDiff line numberDiff line change
@@ -178,17 +178,16 @@ double DefaultPlatform::MonotonicallyIncreasingTime() {
178178
static_cast<double>(base::Time::kMicrosecondsPerSecond);
179179
}
180180

181+
181182
uint64_t DefaultPlatform::AddTraceEvent(
182183
char phase, const uint8_t* category_enabled_flag, const char* name,
183184
const char* scope, uint64_t id, uint64_t bind_id, int num_args,
184185
const char** arg_names, const uint8_t* arg_types,
185-
const uint64_t* arg_values,
186-
std::unique_ptr<v8::ConvertableToTraceFormat>* arg_convertables,
187-
unsigned int flags) {
186+
const uint64_t* arg_values, unsigned int flags) {
188187
if (tracing_controller_) {
189188
return tracing_controller_->AddTraceEvent(
190189
phase, category_enabled_flag, name, scope, id, bind_id, num_args,
191-
arg_names, arg_types, arg_values, arg_convertables, flags);
190+
arg_names, arg_types, arg_values, flags);
192191
}
193192

194193
return 0;

deps/v8/src/libplatform/default-platform.h

+6-7
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,12 @@ class DefaultPlatform : public Platform {
5353
const char* GetCategoryGroupName(
5454
const uint8_t* category_enabled_flag) override;
5555
using Platform::AddTraceEvent;
56-
uint64_t AddTraceEvent(
57-
char phase, const uint8_t* category_enabled_flag, const char* name,
58-
const char* scope, uint64_t id, uint64_t bind_id, int32_t num_args,
59-
const char** arg_names, const uint8_t* arg_types,
60-
const uint64_t* arg_values,
61-
std::unique_ptr<v8::ConvertableToTraceFormat>* arg_convertables,
62-
unsigned int flags) override;
56+
uint64_t AddTraceEvent(char phase, const uint8_t* category_enabled_flag,
57+
const char* name, const char* scope, uint64_t id,
58+
uint64_t bind_id, int32_t num_args,
59+
const char** arg_names, const uint8_t* arg_types,
60+
const uint64_t* arg_values,
61+
unsigned int flags) override;
6362
void UpdateTraceEventDuration(const uint8_t* category_enabled_flag,
6463
const char* name, uint64_t handle) override;
6564
void SetTracingController(tracing::TracingController* tracing_controller);

deps/v8/src/libplatform/tracing/trace-object.cc

+7-14
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
#include "include/libplatform/v8-tracing.h"
66

77
#include "base/trace_event/common/trace_event_common.h"
8-
#include "include/v8-platform.h"
98
#include "src/base/platform/platform.h"
109
#include "src/base/platform/time.h"
1110

@@ -31,13 +30,11 @@ V8_INLINE static void CopyTraceObjectParameter(char** buffer,
3130
}
3231
}
3332

34-
void TraceObject::Initialize(
35-
char phase, const uint8_t* category_enabled_flag, const char* name,
36-
const char* scope, uint64_t id, uint64_t bind_id, int num_args,
37-
const char** arg_names, const uint8_t* arg_types,
38-
const uint64_t* arg_values,
39-
std::unique_ptr<v8::ConvertableToTraceFormat>* arg_convertables,
40-
unsigned int flags) {
33+
void TraceObject::Initialize(char phase, const uint8_t* category_enabled_flag,
34+
const char* name, const char* scope, uint64_t id,
35+
uint64_t bind_id, int num_args,
36+
const char** arg_names, const uint8_t* arg_types,
37+
const uint64_t* arg_values, unsigned int flags) {
4138
pid_ = base::OS::GetCurrentProcessId();
4239
tid_ = base::OS::GetCurrentThreadId();
4340
phase_ = phase;
@@ -58,8 +55,6 @@ void TraceObject::Initialize(
5855
arg_names_[i] = arg_names[i];
5956
arg_values_[i].as_uint = arg_values[i];
6057
arg_types_[i] = arg_types[i];
61-
if (arg_types[i] == TRACE_VALUE_TYPE_CONVERTABLE)
62-
arg_convertables_[i] = std::move(arg_convertables[i]);
6358
}
6459

6560
bool copy = !!(flags & TRACE_EVENT_FLAG_COPY);
@@ -112,10 +107,8 @@ void TraceObject::InitializeForTesting(
112107
char phase, const uint8_t* category_enabled_flag, const char* name,
113108
const char* scope, uint64_t id, uint64_t bind_id, int num_args,
114109
const char** arg_names, const uint8_t* arg_types,
115-
const uint64_t* arg_values,
116-
std::unique_ptr<v8::ConvertableToTraceFormat>* arg_convertables,
117-
unsigned int flags, int pid, int tid, int64_t ts, int64_t tts,
118-
uint64_t duration, uint64_t cpu_duration) {
110+
const uint64_t* arg_values, unsigned int flags, int pid, int tid,
111+
int64_t ts, int64_t tts, uint64_t duration, uint64_t cpu_duration) {
119112
pid_ = pid;
120113
tid_ = tid;
121114
phase_ = phase;

0 commit comments

Comments
 (0)