Commit 09e40545 authored by Jakob Kummerow's avatar Jakob Kummerow Committed by Commit Bot

[objects.h splitting] Move Oddball to oddball.h

Bug: v8:5402
Change-Id: Ib2d7b24cdcf55e3dfa8d3b1665ac565904ac2112
Reviewed-on: https://chromium-review.googlesource.com/c/1379940Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58336}
parent 1e461e3c
...@@ -935,6 +935,8 @@ action("postmortem-metadata") { ...@@ -935,6 +935,8 @@ action("postmortem-metadata") {
"src/objects/map-inl.h", "src/objects/map-inl.h",
"src/objects/name.h", "src/objects/name.h",
"src/objects/name-inl.h", "src/objects/name-inl.h",
"src/objects/oddball-inl.h",
"src/objects/oddball.h",
"src/objects/scope-info.h", "src/objects/scope-info.h",
"src/objects/script.h", "src/objects/script.h",
"src/objects/script-inl.h", "src/objects/script-inl.h",
...@@ -2394,6 +2396,8 @@ v8_source_set("v8_base") { ...@@ -2394,6 +2396,8 @@ v8_source_set("v8_base") {
"src/objects/name.h", "src/objects/name.h",
"src/objects/object-macros-undef.h", "src/objects/object-macros-undef.h",
"src/objects/object-macros.h", "src/objects/object-macros.h",
"src/objects/oddball-inl.h",
"src/objects/oddball.h",
"src/objects/ordered-hash-table-inl.h", "src/objects/ordered-hash-table-inl.h",
"src/objects/ordered-hash-table.cc", "src/objects/ordered-hash-table.cc",
"src/objects/ordered-hash-table.h", "src/objects/ordered-hash-table.h",
......
...@@ -61,6 +61,7 @@ ...@@ -61,6 +61,7 @@
#include "src/objects/js-promise-inl.h" #include "src/objects/js-promise-inl.h"
#include "src/objects/js-regexp-inl.h" #include "src/objects/js-regexp-inl.h"
#include "src/objects/module-inl.h" #include "src/objects/module-inl.h"
#include "src/objects/oddball.h"
#include "src/objects/ordered-hash-table-inl.h" #include "src/objects/ordered-hash-table-inl.h"
#include "src/objects/slots.h" #include "src/objects/slots.h"
#include "src/objects/smi.h" #include "src/objects/smi.h"
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "src/builtins/builtins-utils-gen.h" #include "src/builtins/builtins-utils-gen.h"
#include "src/builtins/builtins.h" #include "src/builtins/builtins.h"
#include "src/code-stub-assembler.h" #include "src/code-stub-assembler.h"
#include "src/objects/oddball.h"
namespace v8 { namespace v8 {
namespace internal { namespace internal {
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "src/code-factory.h" #include "src/code-factory.h"
#include "src/code-stub-assembler.h" #include "src/code-stub-assembler.h"
#include "src/objects-inl.h" #include "src/objects-inl.h"
#include "src/objects/oddball.h"
namespace v8 { namespace v8 {
namespace internal { namespace internal {
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "src/heap/heap-inl.h" #include "src/heap/heap-inl.h"
#include "src/isolate.h" #include "src/isolate.h"
#include "src/objects/oddball-inl.h"
#include "src/roots-inl.h" #include "src/roots-inl.h"
namespace v8 { namespace v8 {
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "src/objects/cell.h" #include "src/objects/cell.h"
#include "src/objects/descriptor-array.h" #include "src/objects/descriptor-array.h"
#include "src/objects/heap-number.h" #include "src/objects/heap-number.h"
#include "src/objects/oddball.h"
#include "src/objects/ordered-hash-table-inl.h" #include "src/objects/ordered-hash-table-inl.h"
#include "src/objects/property-cell.h" #include "src/objects/property-cell.h"
#include "src/wasm/wasm-objects.h" #include "src/wasm/wasm-objects.h"
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include "src/objects/js-array-buffer.h" #include "src/objects/js-array-buffer.h"
#include "src/objects/map.h" #include "src/objects/map.h"
#include "src/objects/maybe-object.h" #include "src/objects/maybe-object.h"
#include "src/objects/oddball.h"
#include "src/runtime/runtime.h" #include "src/runtime/runtime.h"
#include "src/zone/zone-containers.h" #include "src/zone/zone-containers.h"
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "src/compiler/schedule.h" #include "src/compiler/schedule.h"
#include "src/heap/factory-inl.h" #include "src/heap/factory-inl.h"
#include "src/objects/heap-number.h" #include "src/objects/heap-number.h"
#include "src/objects/oddball.h"
namespace v8 { namespace v8 {
namespace internal { namespace internal {
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "src/handles-inl.h" #include "src/handles-inl.h"
#include "src/objects-inl.h" #include "src/objects-inl.h"
#include "src/objects/heap-number-inl.h" #include "src/objects/heap-number-inl.h"
#include "src/objects/oddball.h"
#include "src/string-hasher.h" #include "src/string-hasher.h"
namespace v8 { namespace v8 {
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include "src/objects/descriptor-array.h" #include "src/objects/descriptor-array.h"
#include "src/objects/feedback-cell-inl.h" #include "src/objects/feedback-cell-inl.h"
#include "src/objects/literal-objects-inl.h" #include "src/objects/literal-objects-inl.h"
#include "src/objects/oddball.h"
#include "src/objects/property-cell.h" #include "src/objects/property-cell.h"
#include "src/objects/scope-info.h" #include "src/objects/scope-info.h"
#include "src/objects/script-inl.h" #include "src/objects/script-inl.h"
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "src/objects-inl.h" #include "src/objects-inl.h"
#include "src/objects/free-space-inl.h" #include "src/objects/free-space-inl.h"
#include "src/objects/js-weak-refs-inl.h" #include "src/objects/js-weak-refs-inl.h"
#include "src/objects/oddball.h"
#include "src/wasm/wasm-objects.h" #include "src/wasm/wasm-objects.h"
namespace v8 { namespace v8 {
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include "src/objects/map.h" #include "src/objects/map.h"
#include "src/objects/microtask.h" #include "src/objects/microtask.h"
#include "src/objects/module.h" #include "src/objects/module.h"
#include "src/objects/oddball-inl.h"
#include "src/objects/promise.h" #include "src/objects/promise.h"
#include "src/objects/script.h" #include "src/objects/script.h"
#include "src/objects/shared-function-info.h" #include "src/objects/shared-function-info.h"
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include "src/objects/cell.h" #include "src/objects/cell.h"
#include "src/objects/js-generator.h" #include "src/objects/js-generator.h"
#include "src/objects/module.h" #include "src/objects/module.h"
#include "src/objects/oddball.h"
namespace v8 { namespace v8 {
namespace internal { namespace internal {
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "src/objects-inl.h" #include "src/objects-inl.h"
#include "src/objects/heap-number-inl.h" #include "src/objects/heap-number-inl.h"
#include "src/objects/js-array-inl.h" #include "src/objects/js-array-inl.h"
#include "src/objects/oddball-inl.h"
#include "src/objects/smi.h" #include "src/objects/smi.h"
#include "src/string-builder-inl.h" #include "src/string-builder-inl.h"
#include "src/utils.h" #include "src/utils.h"
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "src/objects/hash-table.h" #include "src/objects/hash-table.h"
#include "src/objects/js-collection.h" #include "src/objects/js-collection.h"
#include "src/objects/js-weak-refs.h" #include "src/objects/js-weak-refs.h"
#include "src/objects/oddball.h"
#include "src/objects/slots.h" #include "src/objects/slots.h"
#include "src/transitions.h" #include "src/transitions.h"
#include "src/wasm/wasm-objects-inl.h" #include "src/wasm/wasm-objects-inl.h"
......
...@@ -54,6 +54,7 @@ ...@@ -54,6 +54,7 @@
#include "src/objects/maybe-object.h" #include "src/objects/maybe-object.h"
#include "src/objects/microtask-inl.h" #include "src/objects/microtask-inl.h"
#include "src/objects/module-inl.h" #include "src/objects/module-inl.h"
#include "src/objects/oddball-inl.h"
#include "src/objects/promise-inl.h" #include "src/objects/promise-inl.h"
#include "src/objects/stack-frame-info-inl.h" #include "src/objects/stack-frame-info-inl.h"
#include "src/objects/struct-inl.h" #include "src/objects/struct-inl.h"
......
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
#include "src/objects/js-proxy-inl.h" #include "src/objects/js-proxy-inl.h"
#include "src/objects/literal-objects.h" #include "src/objects/literal-objects.h"
#include "src/objects/maybe-object-inl.h" #include "src/objects/maybe-object-inl.h"
#include "src/objects/oddball-inl.h"
#include "src/objects/ordered-hash-table-inl.h" #include "src/objects/ordered-hash-table-inl.h"
#include "src/objects/regexp-match-info.h" #include "src/objects/regexp-match-info.h"
#include "src/objects/scope-info.h" #include "src/objects/scope-info.h"
...@@ -471,7 +472,6 @@ CAST_ACCESSOR2(NormalizedMapCache) ...@@ -471,7 +472,6 @@ CAST_ACCESSOR2(NormalizedMapCache)
CAST_ACCESSOR(Object) CAST_ACCESSOR(Object)
CAST_ACCESSOR2(ObjectHashSet) CAST_ACCESSOR2(ObjectHashSet)
CAST_ACCESSOR2(ObjectHashTable) CAST_ACCESSOR2(ObjectHashTable)
CAST_ACCESSOR(Oddball)
CAST_ACCESSOR2(RegExpMatchInfo) CAST_ACCESSOR2(RegExpMatchInfo)
CAST_ACCESSOR2(ScopeInfo) CAST_ACCESSOR2(ScopeInfo)
CAST_ACCESSOR2(TemplateObjectDescription) CAST_ACCESSOR2(TemplateObjectDescription)
...@@ -838,35 +838,6 @@ void HeapObject::synchronized_set_map_word(MapWord map_word) { ...@@ -838,35 +838,6 @@ void HeapObject::synchronized_set_map_word(MapWord map_word) {
int HeapObject::Size() const { return SizeFromMap(map()); } int HeapObject::Size() const { return SizeFromMap(map()); }
double Oddball::to_number_raw() const {
return READ_DOUBLE_FIELD(this, kToNumberRawOffset);
}
void Oddball::set_to_number_raw(double value) {
WRITE_DOUBLE_FIELD(this, kToNumberRawOffset, value);
}
void Oddball::set_to_number_raw_as_bits(uint64_t bits) {
WRITE_UINT64_FIELD(this, kToNumberRawOffset, bits);
}
ACCESSORS2(Oddball, to_string, String, kToStringOffset)
ACCESSORS(Oddball, to_number, Object, kToNumberOffset)
ACCESSORS2(Oddball, type_of, String, kTypeOfOffset)
byte Oddball::kind() const { return Smi::ToInt(READ_FIELD(this, kKindOffset)); }
void Oddball::set_kind(byte value) {
WRITE_FIELD(this, kKindOffset, Smi::FromInt(value));
}
// static
Handle<Object> Oddball::ToNumber(Isolate* isolate, Handle<Oddball> input) {
return handle(input->to_number(), isolate);
}
inline bool IsSpecialReceiverInstanceType(InstanceType instance_type) { inline bool IsSpecialReceiverInstanceType(InstanceType instance_type) {
return instance_type <= LAST_SPECIAL_RECEIVER_TYPE; return instance_type <= LAST_SPECIAL_RECEIVER_TYPE;
} }
......
...@@ -52,6 +52,7 @@ ...@@ -52,6 +52,7 @@
#include "src/objects/literal-objects-inl.h" #include "src/objects/literal-objects-inl.h"
#include "src/objects/microtask-inl.h" #include "src/objects/microtask-inl.h"
#include "src/objects/module-inl.h" #include "src/objects/module-inl.h"
#include "src/objects/oddball-inl.h"
#include "src/objects/promise-inl.h" #include "src/objects/promise-inl.h"
#include "src/objects/stack-frame-info-inl.h" #include "src/objects/stack-frame-info-inl.h"
#include "src/objects/struct-inl.h" #include "src/objects/struct-inl.h"
......
...@@ -1283,74 +1283,6 @@ class Relocatable { ...@@ -1283,74 +1283,6 @@ class Relocatable {
Relocatable* prev_; Relocatable* prev_;
}; };
// The Oddball describes objects null, undefined, true, and false.
class Oddball: public HeapObject {
public:
// [to_number_raw]: Cached raw to_number computed at startup.
inline double to_number_raw() const;
inline void set_to_number_raw(double value);
inline void set_to_number_raw_as_bits(uint64_t bits);
// [to_string]: Cached to_string computed at startup.
DECL_ACCESSORS2(to_string, String)
// [to_number]: Cached to_number computed at startup.
DECL_ACCESSORS(to_number, Object)
// [typeof]: Cached type_of computed at startup.
DECL_ACCESSORS2(type_of, String)
inline byte kind() const;
inline void set_kind(byte kind);
// ES6 section 7.1.3 ToNumber for Boolean, Null, Undefined.
V8_WARN_UNUSED_RESULT static inline Handle<Object> ToNumber(
Isolate* isolate, Handle<Oddball> input);
DECL_CAST(Oddball)
// Dispatched behavior.
DECL_VERIFIER(Oddball)
// Initialize the fields.
static void Initialize(Isolate* isolate, Handle<Oddball> oddball,
const char* to_string, Handle<Object> to_number,
const char* type_of, byte kind);
// Layout description.
static const int kToNumberRawOffset = HeapObject::kHeaderSize;
static const int kToStringOffset = kToNumberRawOffset + kDoubleSize;
static const int kToNumberOffset = kToStringOffset + kPointerSize;
static const int kTypeOfOffset = kToNumberOffset + kPointerSize;
static const int kKindOffset = kTypeOfOffset + kPointerSize;
static const int kSize = kKindOffset + kPointerSize;
static const byte kFalse = 0;
static const byte kTrue = 1;
static const byte kNotBooleanMask = static_cast<byte>(~1);
static const byte kTheHole = 2;
static const byte kNull = 3;
static const byte kArgumentsMarker = 4;
static const byte kUndefined = 5;
static const byte kUninitialized = 6;
static const byte kOther = 7;
static const byte kException = 8;
static const byte kOptimizedOut = 9;
static const byte kStaleRegister = 10;
static const byte kSelfReferenceMarker = 10;
typedef FixedBodyDescriptor<kToStringOffset, kTypeOfOffset + kPointerSize,
kSize> BodyDescriptor;
STATIC_ASSERT(kKindOffset == Internals::kOddballKindOffset);
STATIC_ASSERT(kNull == Internals::kNullOddballKind);
STATIC_ASSERT(kUndefined == Internals::kUndefinedOddballKind);
private:
DISALLOW_IMPLICIT_CONSTRUCTORS(Oddball);
};
// BooleanBit is a helper class for setting and getting a bit in an integer. // BooleanBit is a helper class for setting and getting a bit in an integer.
class BooleanBit : public AllStatic { class BooleanBit : public AllStatic {
public: public:
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "src/objects/dictionary.h" #include "src/objects/dictionary.h"
#include "src/objects/oddball.h"
#include "src/objects/property-cell-inl.h" #include "src/objects/property-cell-inl.h"
// Has to be the last include (doesn't have include guards): // Has to be the last include (doesn't have include guards):
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "src/objects/heap-number-inl.h" #include "src/objects/heap-number-inl.h"
#include "src/objects/map.h" #include "src/objects/map.h"
#include "src/objects/maybe-object-inl.h" #include "src/objects/maybe-object-inl.h"
#include "src/objects/oddball.h"
#include "src/objects/slots.h" #include "src/objects/slots.h"
// Has to be the last include (doesn't have include guards): // Has to be the last include (doesn't have include guards):
......
// Copyright 2018 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_OBJECTS_ODDBALL_INL_H_
#define V8_OBJECTS_ODDBALL_INL_H_
#include "src/objects/oddball.h"
#include "src/heap/heap-write-barrier-inl.h"
// Has to be the last include (doesn't have include guards):
#include "src/objects/object-macros.h"
namespace v8 {
namespace internal {
CAST_ACCESSOR(Oddball)
double Oddball::to_number_raw() const {
return READ_DOUBLE_FIELD(this, kToNumberRawOffset);
}
void Oddball::set_to_number_raw(double value) {
WRITE_DOUBLE_FIELD(this, kToNumberRawOffset, value);
}
void Oddball::set_to_number_raw_as_bits(uint64_t bits) {
WRITE_UINT64_FIELD(this, kToNumberRawOffset, bits);
}
ACCESSORS2(Oddball, to_string, String, kToStringOffset)
ACCESSORS(Oddball, to_number, Object, kToNumberOffset)
ACCESSORS2(Oddball, type_of, String, kTypeOfOffset)
byte Oddball::kind() const { return Smi::ToInt(READ_FIELD(this, kKindOffset)); }
void Oddball::set_kind(byte value) {
WRITE_FIELD(this, kKindOffset, Smi::FromInt(value));
}
// static
Handle<Object> Oddball::ToNumber(Isolate* isolate, Handle<Oddball> input) {
return handle(input->to_number(), isolate);
}
} // namespace internal
} // namespace v8
#include "src/objects/object-macros-undef.h"
#endif // V8_OBJECTS_ODDBALL_INL_H_
// Copyright 2018 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_OBJECTS_ODDBALL_H_
#define V8_OBJECTS_ODDBALL_H_
#include "src/objects.h"
// Has to be the last include (doesn't have include guards):
#include "src/objects/object-macros.h"
namespace v8 {
namespace internal {
// The Oddball describes objects null, undefined, true, and false.
class Oddball : public HeapObject {
public:
// [to_number_raw]: Cached raw to_number computed at startup.
inline double to_number_raw() const;
inline void set_to_number_raw(double value);
inline void set_to_number_raw_as_bits(uint64_t bits);
// [to_string]: Cached to_string computed at startup.
DECL_ACCESSORS2(to_string, String)
// [to_number]: Cached to_number computed at startup.
DECL_ACCESSORS(to_number, Object)
// [typeof]: Cached type_of computed at startup.
DECL_ACCESSORS2(type_of, String)
inline byte kind() const;
inline void set_kind(byte kind);
// ES6 section 7.1.3 ToNumber for Boolean, Null, Undefined.
V8_WARN_UNUSED_RESULT static inline Handle<Object> ToNumber(
Isolate* isolate, Handle<Oddball> input);
DECL_CAST(Oddball)
// Dispatched behavior.
DECL_VERIFIER(Oddball)
// Initialize the fields.
static void Initialize(Isolate* isolate, Handle<Oddball> oddball,
const char* to_string, Handle<Object> to_number,
const char* type_of, byte kind);
// Layout description.
static const int kToNumberRawOffset = HeapObject::kHeaderSize;
static const int kToStringOffset = kToNumberRawOffset + kDoubleSize;
static const int kToNumberOffset = kToStringOffset + kPointerSize;
static const int kTypeOfOffset = kToNumberOffset + kPointerSize;
static const int kKindOffset = kTypeOfOffset + kPointerSize;
static const int kSize = kKindOffset + kPointerSize;
static const byte kFalse = 0;
static const byte kTrue = 1;
static const byte kNotBooleanMask = static_cast<byte>(~1);
static const byte kTheHole = 2;
static const byte kNull = 3;
static const byte kArgumentsMarker = 4;
static const byte kUndefined = 5;
static const byte kUninitialized = 6;
static const byte kOther = 7;
static const byte kException = 8;
static const byte kOptimizedOut = 9;
static const byte kStaleRegister = 10;
static const byte kSelfReferenceMarker = 10;
typedef FixedBodyDescriptor<kToStringOffset, kTypeOfOffset + kPointerSize,
kSize>
BodyDescriptor;
STATIC_ASSERT(kKindOffset == Internals::kOddballKindOffset);
STATIC_ASSERT(kNull == Internals::kNullOddballKind);
STATIC_ASSERT(kUndefined == Internals::kUndefinedOddballKind);
private:
DISALLOW_IMPLICIT_CONSTRUCTORS(Oddball);
};
} // namespace internal
} // namespace v8
#include "src/objects/object-macros-undef.h"
#endif // V8_OBJECTS_ODDBALL_H_
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "src/objects/struct.h" #include "src/objects/struct.h"
#include "src/heap/heap-write-barrier-inl.h" #include "src/heap/heap-write-barrier-inl.h"
#include "src/objects/oddball.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"
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "src/objects-inl.h" #include "src/objects-inl.h"
#include "src/objects/heap-object-inl.h" #include "src/objects/heap-object-inl.h"
#include "src/objects/js-promise-inl.h" #include "src/objects/js-promise-inl.h"
#include "src/objects/oddball-inl.h"
#include "src/runtime/runtime-utils.h" #include "src/runtime/runtime-utils.h"
namespace v8 { namespace v8 {
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include "src/objects/js-array-inl.h" #include "src/objects/js-array-inl.h"
#include "src/objects/js-collection-inl.h" #include "src/objects/js-collection-inl.h"
#include "src/objects/js-regexp-inl.h" #include "src/objects/js-regexp-inl.h"
#include "src/objects/oddball-inl.h"
#include "src/objects/ordered-hash-table-inl.h" #include "src/objects/ordered-hash-table-inl.h"
#include "src/objects/smi.h" #include "src/objects/smi.h"
#include "src/snapshot/code-serializer.h" #include "src/snapshot/code-serializer.h"
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "src/objects/heap-number-inl.h" #include "src/objects/heap-number-inl.h"
#include "src/objects/js-array-buffer-inl.h" #include "src/objects/js-array-buffer-inl.h"
#include "src/objects/managed.h" #include "src/objects/managed.h"
#include "src/objects/oddball-inl.h"
#include "src/v8memory.h" #include "src/v8memory.h"
#include "src/wasm/wasm-code-manager.h" #include "src/wasm/wasm-code-manager.h"
#include "src/wasm/wasm-module.h" #include "src/wasm/wasm-module.h"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment