Convert all JS_FRIEND_API to JS_PUBLIC_API. At this point, the JS_PUBLIC_API has no formal curation process and in practice we add a lot of new features to JS_FRIEND_API without giving much thought to if they should be public. The result is that all embedders need to use the friend API in some form and the distinction has lost meaning. Going forward, we should continue to use the js/public/experimental directory as a place to expose new APIs, and in general should strive for high quality of the APIs that are exposed. If a particular API is tricky or discouraged, comments explaining that will be more helpful that a losely applied FRIEND_API marker. Differential Revision: https://phabricator.services.mozilla.com/D117607
66 lines
2.3 KiB
C++
66 lines
2.3 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
|
* vim: set ts=8 sts=4 et sw=4 tw=99:
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef js_ProfilingCategory_h
|
|
#define js_ProfilingCategory_h
|
|
|
|
#include "jstypes.h" // JS_PUBLIC_API
|
|
|
|
// The source lives in mozglue/baseprofiler/public/ProfilingCategoryList.h
|
|
#include "js/ProfilingCategoryList.h" // MOZ_PROFILING_CATEGORY_LIST
|
|
|
|
namespace JS {
|
|
|
|
// clang-format off
|
|
|
|
// An enum that lists all possible category pairs in one list.
|
|
// This is the enum that is used in profiler stack labels. Having one list that
|
|
// includes subcategories from all categories in one list allows assigning the
|
|
// category pair to a stack label with just one number.
|
|
#define CATEGORY_ENUM_BEGIN_CATEGORY(name, labelAsString, color)
|
|
#define CATEGORY_ENUM_SUBCATEGORY(supercategory, name, labelAsString) name,
|
|
#define CATEGORY_ENUM_END_CATEGORY
|
|
enum class ProfilingCategoryPair : uint32_t {
|
|
MOZ_PROFILING_CATEGORY_LIST(CATEGORY_ENUM_BEGIN_CATEGORY,
|
|
CATEGORY_ENUM_SUBCATEGORY,
|
|
CATEGORY_ENUM_END_CATEGORY)
|
|
COUNT,
|
|
LAST = COUNT - 1,
|
|
};
|
|
#undef CATEGORY_ENUM_BEGIN_CATEGORY
|
|
#undef CATEGORY_ENUM_SUBCATEGORY
|
|
#undef CATEGORY_ENUM_END_CATEGORY
|
|
|
|
// An enum that lists just the categories without their subcategories.
|
|
#define SUPERCATEGORY_ENUM_BEGIN_CATEGORY(name, labelAsString, color) name,
|
|
#define SUPERCATEGORY_ENUM_SUBCATEGORY(supercategory, name, labelAsString)
|
|
#define SUPERCATEGORY_ENUM_END_CATEGORY
|
|
enum class ProfilingCategory : uint32_t {
|
|
MOZ_PROFILING_CATEGORY_LIST(SUPERCATEGORY_ENUM_BEGIN_CATEGORY,
|
|
SUPERCATEGORY_ENUM_SUBCATEGORY,
|
|
SUPERCATEGORY_ENUM_END_CATEGORY)
|
|
COUNT,
|
|
LAST = COUNT - 1,
|
|
};
|
|
#undef SUPERCATEGORY_ENUM_BEGIN_CATEGORY
|
|
#undef SUPERCATEGORY_ENUM_SUBCATEGORY
|
|
#undef SUPERCATEGORY_ENUM_END_CATEGORY
|
|
|
|
// clang-format on
|
|
|
|
struct ProfilingCategoryPairInfo {
|
|
ProfilingCategory mCategory;
|
|
uint32_t mSubcategoryIndex;
|
|
const char* mLabel;
|
|
};
|
|
|
|
JS_PUBLIC_API const ProfilingCategoryPairInfo& GetProfilingCategoryPairInfo(
|
|
ProfilingCategoryPair aCategoryPair);
|
|
|
|
} // namespace JS
|
|
|
|
#endif /* js_ProfilingCategory_h */
|