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

Unified Diff: src/code-stubs.h

Issue 2498563002: [cleanup] Replace ToBooleanICStub::Types with ToBooleanHints (Closed)
Patch Set: Created 4 years, 1 month 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 | « no previous file | src/code-stubs.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/code-stubs.h
diff --git a/src/code-stubs.h b/src/code-stubs.h
index 67c09be7e38259143b8f53836d8f6650d2dc983d..f110f21f451638e6f11d08d1fb792eaea8f5a1ae 100644
--- a/src/code-stubs.h
+++ b/src/code-stubs.h
@@ -14,6 +14,7 @@
#include "src/interface-descriptors.h"
#include "src/macro-assembler.h"
#include "src/ostreams.h"
+#include "src/type-hints.h"
namespace v8 {
namespace internal {
@@ -822,24 +823,6 @@ class GetPropertyStub : public TurboFanCodeStub {
DEFINE_TURBOFAN_CODE_STUB(GetProperty, TurboFanCodeStub);
};
-enum StringAddFlags {
- // Omit both parameter checks.
- STRING_ADD_CHECK_NONE = 0,
- // Check left parameter.
- STRING_ADD_CHECK_LEFT = 1 << 0,
- // Check right parameter.
- STRING_ADD_CHECK_RIGHT = 1 << 1,
- // Check both parameters.
- STRING_ADD_CHECK_BOTH = STRING_ADD_CHECK_LEFT | STRING_ADD_CHECK_RIGHT,
- // Convert parameters when check fails (instead of throwing an exception).
- STRING_ADD_CONVERT = 1 << 2,
- STRING_ADD_CONVERT_LEFT = STRING_ADD_CHECK_LEFT | STRING_ADD_CONVERT,
- STRING_ADD_CONVERT_RIGHT = STRING_ADD_CHECK_RIGHT | STRING_ADD_CONVERT
-};
-
-
-std::ostream& operator<<(std::ostream& os, const StringAddFlags& flags);
-
class NumberToStringStub final : public TurboFanCodeStub {
public:
explicit NumberToStringStub(Isolate* isolate) : TurboFanCodeStub(isolate) {}
@@ -2575,45 +2558,15 @@ class StoreElementStub : public PlatformCodeStub {
class ToBooleanICStub : public HydrogenCodeStub {
public:
- enum Type {
- UNDEFINED,
- BOOLEAN,
- NULL_TYPE,
- SMI,
- SPEC_OBJECT,
- STRING,
- SYMBOL,
- HEAP_NUMBER,
- SIMD_VALUE,
- NUMBER_OF_TYPES
- };
-
- // At most 16 different types can be distinguished, because the Code object
- // only has room for two bytes to hold a set of these types. :-P
- STATIC_ASSERT(NUMBER_OF_TYPES <= 16);
-
- class Types : public EnumSet<Type, uint16_t> {
- public:
- Types() : EnumSet<Type, uint16_t>(0) {}
- explicit Types(uint16_t bits) : EnumSet<Type, uint16_t>(bits) {}
-
- bool UpdateStatus(Isolate* isolate, Handle<Object> object);
- bool NeedsMap() const;
- bool CanBeUndetectable() const {
- return Contains(ToBooleanICStub::SPEC_OBJECT);
- }
- bool IsGeneric() const { return ToIntegral() == Generic().ToIntegral(); }
-
- static Types Generic() { return Types((1 << NUMBER_OF_TYPES) - 1); }
- };
-
ToBooleanICStub(Isolate* isolate, ExtraICState state)
: HydrogenCodeStub(isolate) {
- set_sub_minor_key(TypesBits::encode(static_cast<uint16_t>(state)));
+ set_sub_minor_key(HintsBits::encode(static_cast<uint16_t>(state)));
}
bool UpdateStatus(Handle<Object> object);
- Types types() const { return Types(TypesBits::decode(sub_minor_key())); }
+ ToBooleanHints hints() const {
+ return ToBooleanHints(HintsBits::decode(sub_minor_key()));
+ }
Code::Kind GetCodeKind() const override { return Code::TO_BOOLEAN_IC; }
void PrintState(std::ostream& os) const override; // NOLINT
@@ -2624,10 +2577,10 @@ class ToBooleanICStub : public HydrogenCodeStub {
return ToBooleanICStub(isolate, UNINITIALIZED).GetCode();
}
- ExtraICState GetExtraICState() const override { return types().ToIntegral(); }
+ ExtraICState GetExtraICState() const override { return hints(); }
InlineCacheState GetICState() const {
- if (types().IsEmpty()) {
+ if (hints() == ToBooleanHint::kNone) {
return ::v8::internal::UNINITIALIZED;
} else {
return MONOMORPHIC;
@@ -2638,14 +2591,15 @@ class ToBooleanICStub : public HydrogenCodeStub {
ToBooleanICStub(Isolate* isolate, InitializationState init_state)
: HydrogenCodeStub(isolate, init_state) {}
- class TypesBits : public BitField<uint16_t, 0, NUMBER_OF_TYPES> {};
+ static const int kNumHints = 9;
+ STATIC_ASSERT(static_cast<int>(ToBooleanHint::kAny) ==
+ ((1 << kNumHints) - 1));
+ class HintsBits : public BitField<uint16_t, 0, kNumHints> {};
DEFINE_CALL_INTERFACE_DESCRIPTOR(TypeConversion);
DEFINE_HYDROGEN_CODE_STUB(ToBooleanIC, HydrogenCodeStub);
};
-std::ostream& operator<<(std::ostream& os, const ToBooleanICStub::Types& t);
-
class ElementsTransitionAndStoreStub : public TurboFanCodeStub {
public:
ElementsTransitionAndStoreStub(Isolate* isolate, ElementsKind from_kind,
@@ -2768,8 +2722,6 @@ class SubStringStub : public TurboFanCodeStub {
#undef DEFINE_CODE_STUB
#undef DEFINE_CODE_STUB_BASE
-extern Representation RepresentationFromMachineType(MachineType type);
-
} // namespace internal
} // namespace v8
« no previous file with comments | « no previous file | src/code-stubs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698