Reland "Make unittest link correctly again"
This reverts commit 5db25a0906
.
Original change's description:
> Make unittest link correctly again
>
> Remains to port these fixes over to gyp.
>
> R=machenbach@chromium.org, jkummerow@chromium.org, mstarzinger@chromium.org
> BUG=v8:6325
>
> Change-Id: I3bebbc6d0ec52fcb60e3d51acd27e616f51d3dbb
> Reviewed-on: https://chromium-review.googlesource.com/490108
> Commit-Queue: Jochen Eisinger <jochen@chromium.org>
> Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
> Reviewed-by: Michael Achenbach <machenbach@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#45026}
R=jkummerow@chromium.org
TBR=mstarzinger@chromium.org,clemensh@chromium.org
BUG=v8:6325
Change-Id: Ic3c0ffdf1f13045ea5a3929b720908e0b27a11c3
Reviewed-on: https://chromium-review.googlesource.com/494566
Reviewed-by: Jochen Eisinger <jochen@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Jochen Eisinger <jochen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#45056}
This commit is contained in:
parent
f82a59ac30
commit
668246a1b5
46
BUILD.gn
46
BUILD.gn
@ -877,7 +877,6 @@ v8_source_set("v8_builtins_generators") {
|
|||||||
visibility = [
|
visibility = [
|
||||||
":*",
|
":*",
|
||||||
"test/cctest:*",
|
"test/cctest:*",
|
||||||
"test/unittests:*",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
deps = [
|
deps = [
|
||||||
@ -2431,6 +2430,7 @@ v8_component("v8_libbase") {
|
|||||||
"src/base/debug/stack_trace.h",
|
"src/base/debug/stack_trace.h",
|
||||||
"src/base/division-by-constant.cc",
|
"src/base/division-by-constant.cc",
|
||||||
"src/base/division-by-constant.h",
|
"src/base/division-by-constant.h",
|
||||||
|
"src/base/export-template.h",
|
||||||
"src/base/file-utils.cc",
|
"src/base/file-utils.cc",
|
||||||
"src/base/file-utils.h",
|
"src/base/file-utils.h",
|
||||||
"src/base/flags.h",
|
"src/base/flags.h",
|
||||||
@ -2733,6 +2733,31 @@ if (is_component_build) {
|
|||||||
|
|
||||||
public_configs = [ ":external_config" ]
|
public_configs = [ ":external_config" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
v8_component("v8_for_testing") {
|
||||||
|
testonly = true
|
||||||
|
|
||||||
|
sources = [
|
||||||
|
"src/v8dll-main.cc",
|
||||||
|
]
|
||||||
|
|
||||||
|
deps = [
|
||||||
|
":v8_dump_build_config",
|
||||||
|
]
|
||||||
|
|
||||||
|
public_deps = [
|
||||||
|
":v8_base",
|
||||||
|
":v8_maybe_snapshot",
|
||||||
|
]
|
||||||
|
|
||||||
|
if (v8_use_snapshot) {
|
||||||
|
public_deps += [ ":v8_builtins_generators" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
configs = [ ":internal_config" ]
|
||||||
|
|
||||||
|
public_configs = [ ":external_config" ]
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
group("v8") {
|
group("v8") {
|
||||||
deps = [
|
deps = [
|
||||||
@ -2746,6 +2771,25 @@ if (is_component_build) {
|
|||||||
|
|
||||||
public_configs = [ ":external_config" ]
|
public_configs = [ ":external_config" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
group("v8_for_testing") {
|
||||||
|
testonly = true
|
||||||
|
|
||||||
|
deps = [
|
||||||
|
":v8_dump_build_config",
|
||||||
|
]
|
||||||
|
|
||||||
|
public_deps = [
|
||||||
|
":v8_base",
|
||||||
|
":v8_maybe_snapshot",
|
||||||
|
]
|
||||||
|
|
||||||
|
if (v8_use_snapshot) {
|
||||||
|
public_deps += [ ":v8_builtins_generators" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
public_configs = [ ":external_config" ]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
v8_executable("d8") {
|
v8_executable("d8") {
|
||||||
|
14
PRESUBMIT.py
14
PRESUBMIT.py
@ -43,6 +43,12 @@ _EXCLUDED_PATHS = (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
# Regular expression that matches code which should not be run through cpplint.
|
||||||
|
_NO_LINT_PATHS = (
|
||||||
|
r'src[\\\/]base[\\\/]export-template\.h',
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# Regular expression that matches code only used for test binaries
|
# Regular expression that matches code only used for test binaries
|
||||||
# (best effort).
|
# (best effort).
|
||||||
_TEST_CODE_EXCLUDED_PATHS = (
|
_TEST_CODE_EXCLUDED_PATHS = (
|
||||||
@ -70,9 +76,15 @@ def _V8PresubmitChecks(input_api, output_api):
|
|||||||
from presubmit import SourceProcessor
|
from presubmit import SourceProcessor
|
||||||
from presubmit import StatusFilesProcessor
|
from presubmit import StatusFilesProcessor
|
||||||
|
|
||||||
|
def FilterFile(affected_file):
|
||||||
|
return input_api.FilterSourceFile(
|
||||||
|
affected_file,
|
||||||
|
white_list=None,
|
||||||
|
black_list=_NO_LINT_PATHS)
|
||||||
|
|
||||||
results = []
|
results = []
|
||||||
if not CppLintProcessor().RunOnFiles(
|
if not CppLintProcessor().RunOnFiles(
|
||||||
input_api.AffectedFiles(include_deletes=False)):
|
input_api.AffectedFiles(file_filter=FilterFile, include_deletes=False)):
|
||||||
results.append(output_api.PresubmitError("C++ lint check failed"))
|
results.append(output_api.PresubmitError("C++ lint check failed"))
|
||||||
if not SourceProcessor().RunOnFiles(
|
if not SourceProcessor().RunOnFiles(
|
||||||
input_api.AffectedFiles(include_deletes=False)):
|
input_api.AffectedFiles(include_deletes=False)):
|
||||||
|
163
src/base/export-template.h
Normal file
163
src/base/export-template.h
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
// Copyright 2017 the V8 project authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
#ifndef V8_BASE_EXPORT_TEMPLATE_H_
|
||||||
|
#define V8_BASE_EXPORT_TEMPLATE_H_
|
||||||
|
|
||||||
|
// Synopsis
|
||||||
|
//
|
||||||
|
// This header provides macros for using FOO_EXPORT macros with explicit
|
||||||
|
// template instantiation declarations and definitions.
|
||||||
|
// Generally, the FOO_EXPORT macros are used at declarations,
|
||||||
|
// and GCC requires them to be used at explicit instantiation declarations,
|
||||||
|
// but MSVC requires __declspec(dllexport) to be used at the explicit
|
||||||
|
// instantiation definitions instead.
|
||||||
|
|
||||||
|
// Usage
|
||||||
|
//
|
||||||
|
// In a header file, write:
|
||||||
|
//
|
||||||
|
// extern template class EXPORT_TEMPLATE_DECLARE(FOO_EXPORT) foo<bar>;
|
||||||
|
//
|
||||||
|
// In a source file, write:
|
||||||
|
//
|
||||||
|
// template class EXPORT_TEMPLATE_DEFINE(FOO_EXPORT) foo<bar>;
|
||||||
|
|
||||||
|
// Implementation notes
|
||||||
|
//
|
||||||
|
// The implementation of this header uses some subtle macro semantics to
|
||||||
|
// detect what the provided FOO_EXPORT value was defined as and then
|
||||||
|
// to dispatch to appropriate macro definitions. Unfortunately,
|
||||||
|
// MSVC's C preprocessor is rather non-compliant and requires special
|
||||||
|
// care to make it work.
|
||||||
|
//
|
||||||
|
// Issue 1.
|
||||||
|
//
|
||||||
|
// #define F(x)
|
||||||
|
// F()
|
||||||
|
//
|
||||||
|
// MSVC emits warning C4003 ("not enough actual parameters for macro
|
||||||
|
// 'F'), even though it's a valid macro invocation. This affects the
|
||||||
|
// macros below that take just an "export" parameter, because export
|
||||||
|
// may be empty.
|
||||||
|
//
|
||||||
|
// As a workaround, we can add a dummy parameter and arguments:
|
||||||
|
//
|
||||||
|
// #define F(x,_)
|
||||||
|
// F(,)
|
||||||
|
//
|
||||||
|
// Issue 2.
|
||||||
|
//
|
||||||
|
// #define F(x) G##x
|
||||||
|
// #define Gj() ok
|
||||||
|
// F(j())
|
||||||
|
//
|
||||||
|
// The correct replacement for "F(j())" is "ok", but MSVC replaces it
|
||||||
|
// with "Gj()". As a workaround, we can pass the result to an
|
||||||
|
// identity macro to force MSVC to look for replacements again. (This
|
||||||
|
// is why EXPORT_TEMPLATE_STYLE_3 exists.)
|
||||||
|
|
||||||
|
#define EXPORT_TEMPLATE_DECLARE(export) \
|
||||||
|
EXPORT_TEMPLATE_INVOKE(DECLARE, EXPORT_TEMPLATE_STYLE(export, ), export)
|
||||||
|
#define EXPORT_TEMPLATE_DEFINE(export) \
|
||||||
|
EXPORT_TEMPLATE_INVOKE(DEFINE, EXPORT_TEMPLATE_STYLE(export, ), export)
|
||||||
|
|
||||||
|
// INVOKE is an internal helper macro to perform parameter replacements
|
||||||
|
// and token pasting to chain invoke another macro. E.g.,
|
||||||
|
// EXPORT_TEMPLATE_INVOKE(DECLARE, DEFAULT, FOO_EXPORT)
|
||||||
|
// will export to call
|
||||||
|
// EXPORT_TEMPLATE_DECLARE_DEFAULT(FOO_EXPORT, )
|
||||||
|
// (but with FOO_EXPORT expanded too).
|
||||||
|
#define EXPORT_TEMPLATE_INVOKE(which, style, export) \
|
||||||
|
EXPORT_TEMPLATE_INVOKE_2(which, style, export)
|
||||||
|
#define EXPORT_TEMPLATE_INVOKE_2(which, style, export) \
|
||||||
|
EXPORT_TEMPLATE_##which##_##style(export, )
|
||||||
|
|
||||||
|
// Default style is to apply the FOO_EXPORT macro at declaration sites.
|
||||||
|
#define EXPORT_TEMPLATE_DECLARE_DEFAULT(export, _) export
|
||||||
|
#define EXPORT_TEMPLATE_DEFINE_DEFAULT(export, _)
|
||||||
|
|
||||||
|
// The "MSVC hack" style is used when FOO_EXPORT is defined
|
||||||
|
// as __declspec(dllexport), which MSVC requires to be used at
|
||||||
|
// definition sites instead.
|
||||||
|
#define EXPORT_TEMPLATE_DECLARE_MSVC_HACK(export, _)
|
||||||
|
#define EXPORT_TEMPLATE_DEFINE_MSVC_HACK(export, _) export
|
||||||
|
|
||||||
|
// EXPORT_TEMPLATE_STYLE is an internal helper macro that identifies which
|
||||||
|
// export style needs to be used for the provided FOO_EXPORT macro definition.
|
||||||
|
// "", "__attribute__(...)", and "__declspec(dllimport)" are mapped
|
||||||
|
// to "DEFAULT"; while "__declspec(dllexport)" is mapped to "MSVC_HACK".
|
||||||
|
//
|
||||||
|
// It's implemented with token pasting to transform the __attribute__ and
|
||||||
|
// __declspec annotations into macro invocations. E.g., if FOO_EXPORT is
|
||||||
|
// defined as "__declspec(dllimport)", it undergoes the following sequence of
|
||||||
|
// macro substitutions:
|
||||||
|
// EXPORT_TEMPLATE_STYLE(FOO_EXPORT, )
|
||||||
|
// EXPORT_TEMPLATE_STYLE_2(__declspec(dllimport), )
|
||||||
|
// EXPORT_TEMPLATE_STYLE_3(EXPORT_TEMPLATE_STYLE_MATCH__declspec(dllimport))
|
||||||
|
// EXPORT_TEMPLATE_STYLE_MATCH__declspec(dllimport)
|
||||||
|
// EXPORT_TEMPLATE_STYLE_MATCH_DECLSPEC_dllimport
|
||||||
|
// DEFAULT
|
||||||
|
#define EXPORT_TEMPLATE_STYLE(export, _) EXPORT_TEMPLATE_STYLE_2(export, )
|
||||||
|
#define EXPORT_TEMPLATE_STYLE_2(export, _) \
|
||||||
|
EXPORT_TEMPLATE_STYLE_3( \
|
||||||
|
EXPORT_TEMPLATE_STYLE_MATCH_foj3FJo5StF0OvIzl7oMxA##export)
|
||||||
|
#define EXPORT_TEMPLATE_STYLE_3(style) style
|
||||||
|
|
||||||
|
// Internal helper macros for EXPORT_TEMPLATE_STYLE.
|
||||||
|
//
|
||||||
|
// XXX: C++ reserves all identifiers containing "__" for the implementation,
|
||||||
|
// but "__attribute__" and "__declspec" already contain "__" and the token-paste
|
||||||
|
// operator can only add characters; not remove them. To minimize the risk of
|
||||||
|
// conflict with implementations, we include "foj3FJo5StF0OvIzl7oMxA" (a random
|
||||||
|
// 128-bit string, encoded in Base64) in the macro name.
|
||||||
|
#define EXPORT_TEMPLATE_STYLE_MATCH_foj3FJo5StF0OvIzl7oMxA DEFAULT
|
||||||
|
#define EXPORT_TEMPLATE_STYLE_MATCH_foj3FJo5StF0OvIzl7oMxA__attribute__(...) \
|
||||||
|
DEFAULT
|
||||||
|
#define EXPORT_TEMPLATE_STYLE_MATCH_foj3FJo5StF0OvIzl7oMxA__declspec(arg) \
|
||||||
|
EXPORT_TEMPLATE_STYLE_MATCH_DECLSPEC_##arg
|
||||||
|
|
||||||
|
// Internal helper macros for EXPORT_TEMPLATE_STYLE.
|
||||||
|
#define EXPORT_TEMPLATE_STYLE_MATCH_DECLSPEC_dllexport MSVC_HACK
|
||||||
|
#define EXPORT_TEMPLATE_STYLE_MATCH_DECLSPEC_dllimport DEFAULT
|
||||||
|
|
||||||
|
// Sanity checks.
|
||||||
|
//
|
||||||
|
// EXPORT_TEMPLATE_TEST uses the same macro invocation pattern as
|
||||||
|
// EXPORT_TEMPLATE_DECLARE and EXPORT_TEMPLATE_DEFINE do to check that they're
|
||||||
|
// working correctly. When they're working correctly, the sequence of macro
|
||||||
|
// replacements should go something like:
|
||||||
|
//
|
||||||
|
// EXPORT_TEMPLATE_TEST(DEFAULT, __declspec(dllimport));
|
||||||
|
//
|
||||||
|
// static_assert(EXPORT_TEMPLATE_INVOKE(TEST_DEFAULT,
|
||||||
|
// EXPORT_TEMPLATE_STYLE(__declspec(dllimport), ),
|
||||||
|
// __declspec(dllimport)), "__declspec(dllimport)");
|
||||||
|
//
|
||||||
|
// static_assert(EXPORT_TEMPLATE_INVOKE(TEST_DEFAULT,
|
||||||
|
// DEFAULT, __declspec(dllimport)), "__declspec(dllimport)");
|
||||||
|
//
|
||||||
|
// static_assert(EXPORT_TEMPLATE_TEST_DEFAULT_DEFAULT(
|
||||||
|
// __declspec(dllimport)), "__declspec(dllimport)");
|
||||||
|
//
|
||||||
|
// static_assert(true, "__declspec(dllimport)");
|
||||||
|
//
|
||||||
|
// When they're not working correctly, a syntax error should occur instead.
|
||||||
|
#define EXPORT_TEMPLATE_TEST(want, export) \
|
||||||
|
static_assert(EXPORT_TEMPLATE_INVOKE( \
|
||||||
|
TEST_##want, EXPORT_TEMPLATE_STYLE(export, ), export), \
|
||||||
|
#export)
|
||||||
|
#define EXPORT_TEMPLATE_TEST_DEFAULT_DEFAULT(...) true
|
||||||
|
#define EXPORT_TEMPLATE_TEST_MSVC_HACK_MSVC_HACK(...) true
|
||||||
|
|
||||||
|
EXPORT_TEMPLATE_TEST(DEFAULT, );
|
||||||
|
EXPORT_TEMPLATE_TEST(DEFAULT, __attribute__((visibility("default"))));
|
||||||
|
EXPORT_TEMPLATE_TEST(MSVC_HACK, __declspec(dllexport));
|
||||||
|
EXPORT_TEMPLATE_TEST(DEFAULT, __declspec(dllimport));
|
||||||
|
|
||||||
|
#undef EXPORT_TEMPLATE_TEST
|
||||||
|
#undef EXPORT_TEMPLATE_TEST_DEFAULT_DEFAULT
|
||||||
|
#undef EXPORT_TEMPLATE_TEST_MSVC_HACK_MSVC_HACK
|
||||||
|
|
||||||
|
#endif // V8_BASE_EXPORT_TEMPLATE_H_
|
@ -141,7 +141,8 @@ enum class CheckForMinusZeroMode : uint8_t {
|
|||||||
|
|
||||||
size_t hash_value(CheckForMinusZeroMode);
|
size_t hash_value(CheckForMinusZeroMode);
|
||||||
|
|
||||||
std::ostream& operator<<(std::ostream&, CheckForMinusZeroMode);
|
V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream&,
|
||||||
|
CheckForMinusZeroMode);
|
||||||
|
|
||||||
CheckForMinusZeroMode CheckMinusZeroModeOf(const Operator*) WARN_UNUSED_RESULT;
|
CheckForMinusZeroMode CheckMinusZeroModeOf(const Operator*) WARN_UNUSED_RESULT;
|
||||||
|
|
||||||
|
@ -16818,9 +16818,11 @@ template class Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> >;
|
|||||||
template class Dictionary<GlobalDictionary, GlobalDictionaryShape,
|
template class Dictionary<GlobalDictionary, GlobalDictionaryShape,
|
||||||
Handle<Name> >;
|
Handle<Name> >;
|
||||||
|
|
||||||
template class Dictionary<SeededNumberDictionary,
|
template class EXPORT_TEMPLATE_DEFINE(V8_EXPORT_PRIVATE)
|
||||||
SeededNumberDictionaryShape,
|
HashTable<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>;
|
||||||
uint32_t>;
|
|
||||||
|
template class EXPORT_TEMPLATE_DEFINE(V8_EXPORT_PRIVATE)
|
||||||
|
Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>;
|
||||||
|
|
||||||
template class Dictionary<UnseededNumberDictionary,
|
template class Dictionary<UnseededNumberDictionary,
|
||||||
UnseededNumberDictionaryShape,
|
UnseededNumberDictionaryShape,
|
||||||
@ -16898,10 +16900,6 @@ template Handle<NameDictionary>
|
|||||||
HashTable<NameDictionary, NameDictionaryShape, Handle<Name> >::
|
HashTable<NameDictionary, NameDictionaryShape, Handle<Name> >::
|
||||||
Shrink(Handle<NameDictionary>, Handle<Name>);
|
Shrink(Handle<NameDictionary>, Handle<Name>);
|
||||||
|
|
||||||
template Handle<SeededNumberDictionary>
|
|
||||||
HashTable<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>::
|
|
||||||
Shrink(Handle<SeededNumberDictionary>, uint32_t);
|
|
||||||
|
|
||||||
template Handle<UnseededNumberDictionary>
|
template Handle<UnseededNumberDictionary>
|
||||||
HashTable<UnseededNumberDictionary, UnseededNumberDictionaryShape,
|
HashTable<UnseededNumberDictionary, UnseededNumberDictionaryShape,
|
||||||
uint32_t>::Shrink(Handle<UnseededNumberDictionary>, uint32_t);
|
uint32_t>::Shrink(Handle<UnseededNumberDictionary>, uint32_t);
|
||||||
@ -16941,9 +16939,6 @@ template Handle<NameDictionary>
|
|||||||
Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> >::
|
Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> >::
|
||||||
EnsureCapacity(Handle<NameDictionary>, int, Handle<Name>);
|
EnsureCapacity(Handle<NameDictionary>, int, Handle<Name>);
|
||||||
|
|
||||||
template int HashTable<SeededNumberDictionary, SeededNumberDictionaryShape,
|
|
||||||
uint32_t>::FindEntry(uint32_t);
|
|
||||||
|
|
||||||
template int NameDictionaryBase<NameDictionary, NameDictionaryShape>::FindEntry(
|
template int NameDictionaryBase<NameDictionary, NameDictionaryShape>::FindEntry(
|
||||||
Handle<Name>);
|
Handle<Name>);
|
||||||
|
|
||||||
@ -16991,6 +16986,16 @@ Dictionary<NameDictionary, NameDictionaryShape, Handle<Name>>::CollectKeysTo(
|
|||||||
dictionary,
|
dictionary,
|
||||||
KeyAccumulator* keys);
|
KeyAccumulator* keys);
|
||||||
|
|
||||||
|
template int
|
||||||
|
Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape,
|
||||||
|
uint32_t>::AddEntry(Handle<SeededNumberDictionary> dictionary,
|
||||||
|
uint32_t key, Handle<Object> value,
|
||||||
|
PropertyDetails details, uint32_t hash);
|
||||||
|
|
||||||
|
template int
|
||||||
|
Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape,
|
||||||
|
uint32_t>::NumberOfElementsFilterAttributes(PropertyFilter filter);
|
||||||
|
|
||||||
Handle<Object> JSObject::PrepareSlowElementsForSort(
|
Handle<Object> JSObject::PrepareSlowElementsForSort(
|
||||||
Handle<JSObject> object, uint32_t limit) {
|
Handle<JSObject> object, uint32_t limit) {
|
||||||
DCHECK(object->HasDictionaryElements());
|
DCHECK(object->HasDictionaryElements());
|
||||||
|
@ -1189,7 +1189,7 @@ class Object {
|
|||||||
inline double Number() const;
|
inline double Number() const;
|
||||||
INLINE(bool IsNaN() const);
|
INLINE(bool IsNaN() const);
|
||||||
INLINE(bool IsMinusZero() const);
|
INLINE(bool IsMinusZero() const);
|
||||||
bool ToInt32(int32_t* value);
|
V8_EXPORT_PRIVATE bool ToInt32(int32_t* value);
|
||||||
inline bool ToUint32(uint32_t* value);
|
inline bool ToUint32(uint32_t* value);
|
||||||
|
|
||||||
inline Representation OptimalRepresentation();
|
inline Representation OptimalRepresentation();
|
||||||
|
@ -7,6 +7,9 @@
|
|||||||
|
|
||||||
#include "src/objects/hash-table.h"
|
#include "src/objects/hash-table.h"
|
||||||
|
|
||||||
|
#include "src/base/export-template.h"
|
||||||
|
#include "src/globals.h"
|
||||||
|
|
||||||
// Has to be the last include (doesn't have include guards):
|
// Has to be the last include (doesn't have include guards):
|
||||||
#include "src/objects/object-macros.h"
|
#include "src/objects/object-macros.h"
|
||||||
|
|
||||||
@ -274,6 +277,12 @@ class UnseededNumberDictionaryShape : public NumberDictionaryShape {
|
|||||||
static inline Map* GetMap(Isolate* isolate);
|
static inline Map* GetMap(Isolate* isolate);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern template class EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE)
|
||||||
|
HashTable<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>;
|
||||||
|
|
||||||
|
extern template class EXPORT_TEMPLATE_DECLARE(V8_EXPORT_PRIVATE)
|
||||||
|
Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>;
|
||||||
|
|
||||||
class SeededNumberDictionary
|
class SeededNumberDictionary
|
||||||
: public Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape,
|
: public Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape,
|
||||||
uint32_t> {
|
uint32_t> {
|
||||||
|
@ -7,6 +7,9 @@
|
|||||||
|
|
||||||
#include "src/objects.h"
|
#include "src/objects.h"
|
||||||
|
|
||||||
|
#include "src/base/compiler-specific.h"
|
||||||
|
#include "src/globals.h"
|
||||||
|
|
||||||
// Has to be the last include (doesn't have include guards):
|
// Has to be the last include (doesn't have include guards):
|
||||||
#include "src/objects/object-macros.h"
|
#include "src/objects/object-macros.h"
|
||||||
|
|
||||||
@ -63,7 +66,7 @@ class BaseShape {
|
|||||||
static inline Map* GetMap(Isolate* isolate);
|
static inline Map* GetMap(Isolate* isolate);
|
||||||
};
|
};
|
||||||
|
|
||||||
class HashTableBase : public FixedArray {
|
class V8_EXPORT_PRIVATE HashTableBase : public NON_EXPORTED_BASE(FixedArray) {
|
||||||
public:
|
public:
|
||||||
// Returns the number of elements in the hash table.
|
// Returns the number of elements in the hash table.
|
||||||
inline int NumberOfElements();
|
inline int NumberOfElements();
|
||||||
|
@ -979,7 +979,7 @@ void PRINTF_FORMAT(2, 3) PrintIsolate(void* isolate, const char* format, ...);
|
|||||||
// Safe formatting print. Ensures that str is always null-terminated.
|
// Safe formatting print. Ensures that str is always null-terminated.
|
||||||
// Returns the number of chars written, or -1 if output was truncated.
|
// Returns the number of chars written, or -1 if output was truncated.
|
||||||
int PRINTF_FORMAT(2, 3) SNPrintF(Vector<char> str, const char* format, ...);
|
int PRINTF_FORMAT(2, 3) SNPrintF(Vector<char> str, const char* format, ...);
|
||||||
int PRINTF_FORMAT(2, 0)
|
V8_EXPORT_PRIVATE int PRINTF_FORMAT(2, 0)
|
||||||
VSNPrintF(Vector<char> str, const char* format, va_list args);
|
VSNPrintF(Vector<char> str, const char* format, va_list args);
|
||||||
|
|
||||||
void StrNCpy(Vector<char> dest, const char* src, size_t n);
|
void StrNCpy(Vector<char> dest, const char* src, size_t n);
|
||||||
|
@ -1881,6 +1881,7 @@
|
|||||||
'base/division-by-constant.h',
|
'base/division-by-constant.h',
|
||||||
'base/debug/stack_trace.cc',
|
'base/debug/stack_trace.cc',
|
||||||
'base/debug/stack_trace.h',
|
'base/debug/stack_trace.h',
|
||||||
|
'base/export-template.h',
|
||||||
'base/file-utils.cc',
|
'base/file-utils.cc',
|
||||||
'base/file-utils.h',
|
'base/file-utils.h',
|
||||||
'base/flags.h',
|
'base/flags.h',
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
#ifndef V8_WASM_LOCAL_DECL_ENCODER_H_
|
#ifndef V8_WASM_LOCAL_DECL_ENCODER_H_
|
||||||
#define V8_WASM_LOCAL_DECL_ENCODER_H_
|
#define V8_WASM_LOCAL_DECL_ENCODER_H_
|
||||||
|
|
||||||
|
#include "src/globals.h"
|
||||||
#include "src/wasm/wasm-opcodes.h"
|
#include "src/wasm/wasm-opcodes.h"
|
||||||
#include "src/zone/zone-containers.h"
|
#include "src/zone/zone-containers.h"
|
||||||
#include "src/zone/zone.h"
|
#include "src/zone/zone.h"
|
||||||
@ -15,7 +16,7 @@ namespace wasm {
|
|||||||
|
|
||||||
// A helper for encoding local declarations prepended to the body of a
|
// A helper for encoding local declarations prepended to the body of a
|
||||||
// function.
|
// function.
|
||||||
class LocalDeclEncoder {
|
class V8_EXPORT_PRIVATE LocalDeclEncoder {
|
||||||
public:
|
public:
|
||||||
explicit LocalDeclEncoder(Zone* zone, FunctionSig* s = nullptr)
|
explicit LocalDeclEncoder(Zone* zone, FunctionSig* s = nullptr)
|
||||||
: sig(s), local_decls(zone), total(0) {}
|
: sig(s), local_decls(zone), total(0) {}
|
||||||
|
@ -22,7 +22,7 @@ class Isolate;
|
|||||||
namespace wasm {
|
namespace wasm {
|
||||||
|
|
||||||
// Base class for Result<T>.
|
// Base class for Result<T>.
|
||||||
class ResultBase {
|
class V8_EXPORT_PRIVATE ResultBase {
|
||||||
protected:
|
protected:
|
||||||
ResultBase(ResultBase&& other)
|
ResultBase(ResultBase&& other)
|
||||||
: error_offset_(other.error_offset_),
|
: error_offset_(other.error_offset_),
|
||||||
|
@ -187,7 +187,7 @@ v8_executable("unittests") {
|
|||||||
#}],
|
#}],
|
||||||
|
|
||||||
deps = [
|
deps = [
|
||||||
"../..:v8_builtins_generators",
|
"../..:v8_for_testing",
|
||||||
"../..:v8_libbase",
|
"../..:v8_libbase",
|
||||||
"../..:v8_libplatform",
|
"../..:v8_libplatform",
|
||||||
"//build/config/sanitizers:deps",
|
"//build/config/sanitizers:deps",
|
||||||
@ -200,17 +200,6 @@ v8_executable("unittests") {
|
|||||||
deps += [ "//third_party/icu" ]
|
deps += [ "//third_party/icu" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
defines = []
|
|
||||||
|
|
||||||
if (is_component_build) {
|
|
||||||
# unittests can't be built against a shared library, so we
|
|
||||||
# need to depend on the underlying static target in that case.
|
|
||||||
deps += [ "../..:v8_maybe_snapshot" ]
|
|
||||||
defines += [ "BUILDING_V8_SHARED" ]
|
|
||||||
} else {
|
|
||||||
deps += [ "../..:v8" ]
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_win) {
|
if (is_win) {
|
||||||
# This warning is benignly triggered by the U16 and U32 macros in
|
# This warning is benignly triggered by the U16 and U32 macros in
|
||||||
# bytecode-utils.h.
|
# bytecode-utils.h.
|
||||||
|
Loading…
Reference in New Issue
Block a user