diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/JavaScriptCore/heap/GCAssertions.h | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/JavaScriptCore/heap/GCAssertions.h')
-rw-r--r-- | Source/JavaScriptCore/heap/GCAssertions.h | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/Source/JavaScriptCore/heap/GCAssertions.h b/Source/JavaScriptCore/heap/GCAssertions.h index b0676bfee..145a30eb8 100644 --- a/Source/JavaScriptCore/heap/GCAssertions.h +++ b/Source/JavaScriptCore/heap/GCAssertions.h @@ -1,5 +1,6 @@ /* * Copyright (C) 2012 Apple Inc. All rights reserved. + * Copyright (C) 2015 Igalia S.L. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -23,8 +24,7 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef GCAssertions_h -#define GCAssertions_h +#pragma once #include <type_traits> #include <wtf/Assertions.h> @@ -32,27 +32,29 @@ #if ENABLE(GC_VALIDATION) #define ASSERT_GC_OBJECT_LOOKS_VALID(cell) do { \ RELEASE_ASSERT(cell);\ - RELEASE_ASSERT(cell->unvalidatedStructure()->unvalidatedStructure() == cell->unvalidatedStructure()->unvalidatedStructure()->unvalidatedStructure()); \ + RELEASE_ASSERT(cell->structure()->structure() == cell->structure()->structure()->structure()); \ } while (0) #define ASSERT_GC_OBJECT_INHERITS(object, classInfo) do {\ ASSERT_GC_OBJECT_LOOKS_VALID(object); \ - RELEASE_ASSERT(object->inherits(classInfo)); \ + RELEASE_ASSERT(object->inherits(*object->JSC::JSCell::vm(), classInfo)); \ +} while (0) + +// Used to avoid triggering -Wundefined-bool-conversion. +#define ASSERT_THIS_GC_OBJECT_LOOKS_VALID() do { \ + RELEASE_ASSERT(this->structure()->structure() == this->structure()->structure()->structure()); \ +} while (0) + +#define ASSERT_THIS_GC_OBJECT_INHERITS(classInfo) do {\ + ASSERT_THIS_GC_OBJECT_LOOKS_VALID(); \ + RELEASE_ASSERT(this->inherits(*this->vm(), classInfo)); \ } while (0) #else #define ASSERT_GC_OBJECT_LOOKS_VALID(cell) do { (void)cell; } while (0) #define ASSERT_GC_OBJECT_INHERITS(object, classInfo) do { (void)object; (void)classInfo; } while (0) +#define ASSERT_THIS_GC_OBJECT_LOOKS_VALID() +#define ASSERT_THIS_GC_OBJECT_INHERITS(classInfo) do { (void)classInfo; } while (0) #endif -#if COMPILER(CLANG) #define STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(klass) static_assert(std::is_trivially_destructible<klass>::value, #klass " must have a trivial destructor") -#elif COMPILER(MSVC) -// An earlier verison of the C++11 spec used to call this type trait std::has_trivial_destructor, and that's what MSVC uses. -#define STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(klass) static_assert(std::has_trivial_destructor<klass>::value, #klass " must have a trivial destructor") -#else -// This is not enabled on GCC due to http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52702 -#define STATIC_ASSERT_IS_TRIVIALLY_DESTRUCTIBLE(klass) -#endif - -#endif // GCAssertions_h |