Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(253)

Unified Diff: runtime/vm/object.h

Issue 1660063002: Remove many features when building product mode (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/metrics_test.cc ('k') | runtime/vm/object.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/object.h
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 1715a13a293a8ae1b354697908eb522cd39752a3..39a2e2ec0f6ac7bbc31e8a9f9749067e9f369e36 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -11,6 +11,7 @@
#include "vm/json_stream.h"
#include "vm/bitmap.h"
#include "vm/dart.h"
+#include "vm/flags.h"
#include "vm/globals.h"
#include "vm/growable_array.h"
#include "vm/handles.h"
@@ -137,15 +138,7 @@ class Symbols;
return reinterpret_cast<Raw##object*>(Object::null()); \
} \
virtual const char* ToCString() const; \
- /* Object is printed as JSON into stream. If ref is true only a header */ \
- /* with an object id is printed. If ref is false the object is fully */ \
- /* printed. */ \
- virtual const char* JSONType() const { \
- return ""#object; \
- } \
static const ClassId kClassId = k##object##Cid; \
- protected: /* NOLINT */ \
- virtual void PrintJSONImpl(JSONStream* stream, bool ref) const; \
private: /* NOLINT */ \
/* Initialize the handle based on the raw_ptr in the presence of null. */ \
static void initializeHandle(object* obj, RawObject* raw_ptr) { \
@@ -169,6 +162,28 @@ class Symbols;
void operator=(const object& value); \
void operator=(const super& value); \
+// Conditionally include object_service.cc functionality in the vtable to avoid
+// link errors like the following:
+//
+// object.o:(.rodata._ZTVN4....E[_ZTVN4...E]+0x278):
+// undefined reference to
+// `dart::Instance::PrintSharedInstanceJSON(dart::JSONObject*, bool) const'.
+//
+#ifndef PRODUCT
+#define OBJECT_SERVICE_SUPPORT(object) \
+ protected: /* NOLINT */ \
+ /* Object is printed as JSON into stream. If ref is true only a header */ \
+ /* with an object id is printed. If ref is false the object is fully */ \
+ /* printed. */ \
+ virtual void PrintJSONImpl(JSONStream* stream, bool ref) const; \
+ virtual const char* JSONType() const { \
+ return ""#object; \
+ }
+#else
+#define OBJECT_SERVICE_SUPPORT(object) \
+ protected: /* NOLINT */
+#endif // !PRODUCT
+
#define SNAPSHOT_READER_SUPPORT(object) \
static Raw##object* ReadFrom(SnapshotReader* reader, \
intptr_t object_id, \
@@ -189,6 +204,7 @@ class Symbols;
protected: /* NOLINT */ \
object() : super() {} \
BASE_OBJECT_IMPLEMENTATION(object, super) \
+ OBJECT_SERVICE_SUPPORT(object)
#define HEAP_OBJECT_IMPLEMENTATION(object, super) \
OBJECT_IMPLEMENTATION(object, super); \
@@ -214,6 +230,7 @@ class Symbols;
private: /* NOLINT */ \
object() : super() {} \
BASE_OBJECT_IMPLEMENTATION(object, super) \
+ OBJECT_SERVICE_SUPPORT(object) \
const Raw##object* raw_ptr() const { \
ASSERT(raw() != null()); \
return raw()->ptr(); \
@@ -280,11 +297,13 @@ class Object {
}
}
+#ifndef PRODUCT
void PrintJSON(JSONStream* stream, bool ref = true) const;
-
+ virtual void PrintJSONImpl(JSONStream* stream, bool ref) const;
virtual const char* JSONType() const {
return IsNull() ? "null" : "Object";
}
+#endif
// Returns the name that is used to identify an object in the
// namespace dictionary.
@@ -708,8 +727,6 @@ class Object {
const char* protocol_type,
bool ref) const;
- virtual void PrintJSONImpl(JSONStream* stream, bool ref) const;
-
private:
static intptr_t NextFieldOffset() {
// Indicates this class cannot be extended by dart code.
@@ -5108,7 +5125,9 @@ class Instance : public Object {
static intptr_t ElementSizeFor(intptr_t cid);
protected:
+#ifndef PRODUCT
virtual void PrintSharedInstanceJSON(JSONObject* jsobj, bool ref) const;
+#endif
private:
RawObject** FieldAddrAtOffset(intptr_t offset) const {
@@ -5895,6 +5914,7 @@ class Number : public Instance {
private:
OBJECT_IMPLEMENTATION(Number, Instance);
+
friend class Class;
};
@@ -6036,7 +6056,7 @@ class Smi : public Integer {
Smi() : Integer() {}
BASE_OBJECT_IMPLEMENTATION(Smi, Integer);
-
+ OBJECT_SERVICE_SUPPORT(Smi);
friend class Api; // For ValueFromRaw
friend class Class;
friend class Object;
« no previous file with comments | « runtime/vm/metrics_test.cc ('k') | runtime/vm/object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698