Commit cca5e7ff authored by Igor Sheludko's avatar Igor Sheludko Committed by Commit Bot

[iwyu] Fix failing header include checks for gcc build

Bug: v8:9290, v8:7490, v8:9183
Change-Id: Iac5cdf0d96c1fdbb7e6461ea435c1ff32c6a701e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627543
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#61821}
parent 8306b26a
...@@ -111,9 +111,14 @@ class Handle final : public HandleBase { ...@@ -111,9 +111,14 @@ class Handle final : public HandleBase {
T object_; T object_;
}; };
V8_INLINE explicit Handle(Address* location = nullptr) V8_INLINE explicit Handle() : HandleBase(nullptr) {
: HandleBase(location) { // Skip static type check in order to allow Handle<XXX>::null() as default
// Type check: // parameter values in non-inl header files without requiring full
// definition of type XXX.
}
V8_INLINE explicit Handle(Address* location) : HandleBase(location) {
// This static type check also fails for forward class declarations.
static_assert(std::is_convertible<T*, Object*>::value, static_assert(std::is_convertible<T*, Object*>::value,
"static type violation"); "static type violation");
// TODO(jkummerow): Runtime type check here as a SLOW_DCHECK? // TODO(jkummerow): Runtime type check here as a SLOW_DCHECK?
......
...@@ -12,14 +12,11 @@ ...@@ -12,14 +12,11 @@
namespace v8 { namespace v8 {
namespace internal { namespace internal {
template <typename T> template <typename T>
MaybeHandle<T>::MaybeHandle(T object, Isolate* isolate) MaybeHandle<T>::MaybeHandle(T object, Isolate* isolate)
: MaybeHandle(handle(object, isolate)) {} : MaybeHandle(handle(object, isolate)) {}
MaybeObjectHandle::MaybeObjectHandle()
: reference_type_(HeapObjectReferenceType::STRONG),
handle_(Handle<Object>::null()) {}
MaybeObjectHandle::MaybeObjectHandle(MaybeObject object, Isolate* isolate) { MaybeObjectHandle::MaybeObjectHandle(MaybeObject object, Isolate* isolate) {
HeapObject heap_object; HeapObject heap_object;
DCHECK(!object->IsCleared()); DCHECK(!object->IsCleared());
......
...@@ -81,7 +81,8 @@ class MaybeHandle final { ...@@ -81,7 +81,8 @@ class MaybeHandle final {
// while the MaybeObjectHandle is alive. // while the MaybeObjectHandle is alive.
class MaybeObjectHandle { class MaybeObjectHandle {
public: public:
inline MaybeObjectHandle(); inline MaybeObjectHandle()
: reference_type_(HeapObjectReferenceType::STRONG) {}
inline MaybeObjectHandle(MaybeObject object, Isolate* isolate); inline MaybeObjectHandle(MaybeObject object, Isolate* isolate);
inline MaybeObjectHandle(Object object, Isolate* isolate); inline MaybeObjectHandle(Object object, Isolate* isolate);
inline explicit MaybeObjectHandle(Handle<Object> object); inline explicit MaybeObjectHandle(Handle<Object> object);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment