diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-08-24 12:15:48 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-08-28 13:30:04 +0000 |
commit | b014812705fc80bff0a5c120dfcef88f349816dc (patch) | |
tree | 25a2e2d9fa285f1add86aa333389a839f81a39ae /chromium/v8/src/compiler/simplified-operator.h | |
parent | 9f4560b1027ae06fdb497023cdcaf91b8511fa74 (diff) | |
download | qtwebengine-chromium-b014812705fc80bff0a5c120dfcef88f349816dc.tar.gz |
BASELINE: Update Chromium to 68.0.3440.125
Change-Id: I23f19369e01f688e496f5bf179abb521ad73874f
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/v8/src/compiler/simplified-operator.h')
-rw-r--r-- | chromium/v8/src/compiler/simplified-operator.h | 55 |
1 files changed, 35 insertions, 20 deletions
diff --git a/chromium/v8/src/compiler/simplified-operator.h b/chromium/v8/src/compiler/simplified-operator.h index 300bdc85989..62e7f73bfab 100644 --- a/chromium/v8/src/compiler/simplified-operator.h +++ b/chromium/v8/src/compiler/simplified-operator.h @@ -23,6 +23,7 @@ namespace v8 { namespace internal { // Forward declarations. +enum class AbortReason; class Zone; namespace compiler { @@ -37,6 +38,10 @@ size_t hash_value(BaseTaggedness); std::ostream& operator<<(std::ostream&, BaseTaggedness); +size_t hash_value(LoadSensitivity); + +std::ostream& operator<<(std::ostream&, LoadSensitivity); + // An access descriptor for loads/stores of fixed structures like field // accesses of heap objects. Accesses from either tagged or untagged base // pointers are supported; untagging is done automatically during lowering. @@ -45,27 +50,31 @@ struct FieldAccess { int offset; // offset of the field, without tag. MaybeHandle<Name> name; // debugging only. MaybeHandle<Map> map; // map of the field value (if known). - Type* type; // type of the field. + Type type; // type of the field. MachineType machine_type; // machine type of the field. WriteBarrierKind write_barrier_kind; // write barrier hint. + LoadSensitivity load_sensitivity; // load safety for poisoning. FieldAccess() : base_is_tagged(kTaggedBase), offset(0), type(Type::None()), machine_type(MachineType::None()), - write_barrier_kind(kFullWriteBarrier) {} + write_barrier_kind(kFullWriteBarrier), + load_sensitivity(LoadSensitivity::kUnsafe) {} FieldAccess(BaseTaggedness base_is_tagged, int offset, MaybeHandle<Name> name, - MaybeHandle<Map> map, Type* type, MachineType machine_type, - WriteBarrierKind write_barrier_kind) + MaybeHandle<Map> map, Type type, MachineType machine_type, + WriteBarrierKind write_barrier_kind, + LoadSensitivity load_sensitivity = LoadSensitivity::kUnsafe) : base_is_tagged(base_is_tagged), offset(offset), name(name), map(map), type(type), machine_type(machine_type), - write_barrier_kind(write_barrier_kind) {} + write_barrier_kind(write_barrier_kind), + load_sensitivity(load_sensitivity) {} int tag() const { return base_is_tagged == kTaggedBase ? kHeapObjectTag : 0; } }; @@ -90,24 +99,28 @@ void Operator1<FieldAccess>::PrintParameter(std::ostream& os, struct ElementAccess { BaseTaggedness base_is_tagged; // specifies if the base pointer is tagged. int header_size; // size of the header, without tag. - Type* type; // type of the element. + Type type; // type of the element. MachineType machine_type; // machine type of the element. WriteBarrierKind write_barrier_kind; // write barrier hint. + LoadSensitivity load_sensitivity; // load safety for poisoning. ElementAccess() : base_is_tagged(kTaggedBase), header_size(0), type(Type::None()), machine_type(MachineType::None()), - write_barrier_kind(kFullWriteBarrier) {} + write_barrier_kind(kFullWriteBarrier), + load_sensitivity(LoadSensitivity::kUnsafe) {} - ElementAccess(BaseTaggedness base_is_tagged, int header_size, Type* type, - MachineType machine_type, WriteBarrierKind write_barrier_kind) + ElementAccess(BaseTaggedness base_is_tagged, int header_size, Type type, + MachineType machine_type, WriteBarrierKind write_barrier_kind, + LoadSensitivity load_sensitivity = LoadSensitivity::kUnsafe) : base_is_tagged(base_is_tagged), header_size(header_size), type(type), machine_type(machine_type), - write_barrier_kind(write_barrier_kind) {} + write_barrier_kind(write_barrier_kind), + load_sensitivity(load_sensitivity) {} int tag() const { return base_is_tagged == kTaggedBase ? kHeapObjectTag : 0; } }; @@ -370,7 +383,7 @@ Handle<Map> DoubleMapParameterOf(const Operator* op) V8_WARN_UNUSED_RESULT; Handle<Map> FastMapParameterOf(const Operator* op) V8_WARN_UNUSED_RESULT; // Parameters for TransitionAndStoreNonNumberElement. -Type* ValueTypeParameterOf(const Operator* op) V8_WARN_UNUSED_RESULT; +Type ValueTypeParameterOf(const Operator* op) V8_WARN_UNUSED_RESULT; // A hint for speculative number operations. enum class NumberOperationHint : uint8_t { @@ -415,14 +428,14 @@ bool IsRestLengthOf(const Operator* op) V8_WARN_UNUSED_RESULT; class AllocateParameters { public: - AllocateParameters(Type* type, PretenureFlag pretenure) + AllocateParameters(Type type, PretenureFlag pretenure) : type_(type), pretenure_(pretenure) {} - Type* type() const { return type_; } + Type type() const { return type_; } PretenureFlag pretenure() const { return pretenure_; } private: - Type* type_; + Type type_; PretenureFlag pretenure_; }; @@ -436,7 +449,7 @@ bool operator==(AllocateParameters const&, AllocateParameters const&); PretenureFlag PretenureFlagOf(const Operator* op) V8_WARN_UNUSED_RESULT; -Type* AllocateTypeOf(const Operator* op) V8_WARN_UNUSED_RESULT; +Type AllocateTypeOf(const Operator* op) V8_WARN_UNUSED_RESULT; UnicodeEncoding UnicodeEncodingOf(const Operator*) V8_WARN_UNUSED_RESULT; @@ -597,7 +610,7 @@ class V8_EXPORT_PRIVATE SimplifiedOperatorBuilder final const Operator* TruncateTaggedToBit(); const Operator* TruncateTaggedPointerToBit(); - const Operator* MaskIndexWithBound(); + const Operator* PoisonIndex(); const Operator* CompareMaps(ZoneHandleSet<Map>); const Operator* MapGuard(ZoneHandleSet<Map> maps); @@ -650,6 +663,7 @@ class V8_EXPORT_PRIVATE SimplifiedOperatorBuilder final const Operator* ObjectIsDetectableCallable(); const Operator* ObjectIsMinusZero(); const Operator* ObjectIsNaN(); + const Operator* NumberIsNaN(); const Operator* ObjectIsNonCallable(); const Operator* ObjectIsNumber(); const Operator* ObjectIsReceiver(); @@ -692,9 +706,8 @@ class V8_EXPORT_PRIVATE SimplifiedOperatorBuilder final // transition-elements-kind object, from-map, to-map const Operator* TransitionElementsKind(ElementsTransition transition); - const Operator* Allocate(Type* type, PretenureFlag pretenure = NOT_TENURED); - const Operator* AllocateRaw(Type* type, - PretenureFlag pretenure = NOT_TENURED); + const Operator* Allocate(Type type, PretenureFlag pretenure = NOT_TENURED); + const Operator* AllocateRaw(Type type, PretenureFlag pretenure = NOT_TENURED); const Operator* LoadFieldByIndex(); const Operator* LoadField(FieldAccess const&); @@ -717,7 +730,7 @@ class V8_EXPORT_PRIVATE SimplifiedOperatorBuilder final // store-element [base + index], object value, only with fast arrays. const Operator* TransitionAndStoreNonNumberElement(Handle<Map> fast_map, - Type* value_type); + Type value_type); // load-typed-element buffer, [base + external + index] const Operator* LoadTypedElement(ExternalArrayType const&); @@ -728,6 +741,8 @@ class V8_EXPORT_PRIVATE SimplifiedOperatorBuilder final // Abort (for terminating execution on internal error). const Operator* RuntimeAbort(AbortReason reason); + const Operator* DateNow(); + private: Zone* zone() const { return zone_; } |