style: Rejigger a bit rust features so that rusttests still link.

We cannot compile with just feature(gecko + debug_assertions), since that's how
debug rusttests get compiled and they don't have the refcount logging stuff.

We were getting away with it for the pre-existing usage of the style crate,
because it wasn't used during any test and presumably the linker didn't
complain. But servo_arc is definitely used in tests.

Differential Revision: https://phabricator.services.mozilla.com/D32691
This commit is contained in:
Emilio Cobos Álvarez 2019-05-27 14:56:08 +02:00
parent 9a9a4e12d5
commit 3652a0f1e1
4 changed files with 9 additions and 8 deletions

View file

@ -12,7 +12,7 @@ path = "lib.rs"
[features]
servo = ["serde"]
gecko = []
gecko_refcount_logging = []
[dependencies]
nodrop = {version = "0.1.8"}

View file

@ -177,7 +177,7 @@ impl<T> Arc<T> {
data,
}));
#[cfg(all(feature = "gecko", debug_assertions))]
#[cfg(feature = "gecko_refcount_logging")]
unsafe {
// FIXME(emilio): Would be so amazing to have
// std::intrinsics::type_name() around, so that we could also report
@ -312,7 +312,7 @@ impl<T: ?Sized> Arc<T> {
#[inline(always)]
fn record_drop(&self) {
#[cfg(all(feature = "gecko", debug_assertions))]
#[cfg(feature = "gecko_refcount_logging")]
unsafe {
NS_LogDtor(self.ptr() as *const _, b"ServoArc\0".as_ptr() as *const _, 8);
}
@ -348,7 +348,7 @@ impl<T: ?Sized> Arc<T> {
}
}
#[cfg(all(feature = "gecko", debug_assertions))]
#[cfg(feature = "gecko_refcount_logging")]
extern "C" {
fn NS_LogCtor(aPtr: *const std::os::raw::c_void, aTypeName: *const std::os::raw::c_char, aSize: u32);
fn NS_LogDtor(aPtr: *const std::os::raw::c_void, aTypeName: *const std::os::raw::c_char, aSize: u32);
@ -745,7 +745,7 @@ impl<H, T> Arc<HeaderSlice<H, [T]>> {
);
}
#[cfg(all(feature = "gecko", debug_assertions))]
#[cfg(feature = "gecko_refcount_logging")]
unsafe {
if !is_static {
// FIXME(emilio): Would be so amazing to have

View file

@ -22,6 +22,7 @@ servo = ["serde", "style_traits/servo", "servo_atoms", "servo_config", "html5eve
"cssparser/serde", "encoding_rs", "malloc_size_of/servo", "arrayvec/use_union",
"servo_url", "string_cache", "crossbeam-channel", "to_shmem/servo", "servo_arc/servo"]
gecko_debug = []
gecko_refcount_logging = []
gecko_profiler = []
[dependencies]

View file

@ -755,7 +755,7 @@ unsafe impl Sync for RuleTree {}
unsafe impl Send for RuleTree {}
// On Gecko builds, hook into the leak checking machinery.
#[cfg(all(feature = "gecko", debug_assertions))]
#[cfg(feature = "gecko_refcount_logging")]
mod gecko_leak_checking {
use super::RuleNode;
use std::mem::size_of;
@ -788,13 +788,13 @@ mod gecko_leak_checking {
#[inline(always)]
fn log_new(_ptr: *const RuleNode) {
#[cfg(all(feature = "gecko", debug_assertions))]
#[cfg(feature = "gecko_refcount_logging")]
gecko_leak_checking::log_ctor(_ptr);
}
#[inline(always)]
fn log_drop(_ptr: *const RuleNode) {
#[cfg(all(feature = "gecko", debug_assertions))]
#[cfg(feature = "gecko_refcount_logging")]
gecko_leak_checking::log_dtor(_ptr);
}