| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_COMPILER_JS_OPERATOR_H_ | 5 #ifndef V8_COMPILER_JS_OPERATOR_H_ |
| 6 #define V8_COMPILER_JS_OPERATOR_H_ | 6 #define V8_COMPILER_JS_OPERATOR_H_ |
| 7 | 7 |
| 8 #include "src/runtime/runtime.h" | 8 #include "src/runtime/runtime.h" |
| 9 #include "src/unique.h" | 9 #include "src/unique.h" |
| 10 | 10 |
| 11 namespace v8 { | 11 namespace v8 { |
| 12 namespace internal { | 12 namespace internal { |
| 13 namespace compiler { | 13 namespace compiler { |
| 14 | 14 |
| 15 // Forward declarations. | 15 // Forward declarations. |
| 16 class Operator; | 16 class Operator; |
| 17 struct JSOperatorGlobalCache; | 17 struct JSOperatorGlobalCache; |
| 18 | 18 |
| 19 | 19 |
| 20 // Defines a pair of {TypeFeedbackVector} and {TypeFeedbackVectorICSlot}, which |
| 21 // is used to access the type feedback for a certain {Node}. |
| 22 class VectorSlotPair { |
| 23 public: |
| 24 VectorSlotPair() : slot_(FeedbackVectorICSlot::Invalid()) {} |
| 25 VectorSlotPair(Handle<TypeFeedbackVector> vector, FeedbackVectorICSlot slot) |
| 26 : vector_(vector), slot_(slot) {} |
| 27 |
| 28 bool IsValid() const { return !vector_.is_null(); } |
| 29 |
| 30 MaybeHandle<TypeFeedbackVector> vector() const { return vector_; } |
| 31 FeedbackVectorICSlot slot() const { return slot_; } |
| 32 |
| 33 int index() const { |
| 34 Handle<TypeFeedbackVector> vector; |
| 35 return vector_.ToHandle(&vector) ? vector->GetIndex(slot_) : -1; |
| 36 } |
| 37 |
| 38 private: |
| 39 const MaybeHandle<TypeFeedbackVector> vector_; |
| 40 const FeedbackVectorICSlot slot_; |
| 41 }; |
| 42 |
| 43 bool operator==(VectorSlotPair const&, VectorSlotPair const&); |
| 44 bool operator!=(VectorSlotPair const&, VectorSlotPair const&); |
| 45 |
| 46 size_t hash_value(VectorSlotPair const&); |
| 47 |
| 48 |
| 20 // Defines the arity and the call flags for a JavaScript function call. This is | 49 // Defines the arity and the call flags for a JavaScript function call. This is |
| 21 // used as a parameter by JSCallFunction operators. | 50 // used as a parameter by JSCallFunction operators. |
| 22 class CallFunctionParameters final { | 51 class CallFunctionParameters final { |
| 23 public: | 52 public: |
| 24 CallFunctionParameters(size_t arity, CallFunctionFlags flags, | 53 CallFunctionParameters(size_t arity, CallFunctionFlags flags, |
| 25 LanguageMode language_mode) | 54 LanguageMode language_mode, |
| 55 VectorSlotPair const& feedback) |
| 26 : bit_field_(ArityField::encode(arity) | FlagsField::encode(flags) | | 56 : bit_field_(ArityField::encode(arity) | FlagsField::encode(flags) | |
| 27 LanguageModeField::encode(language_mode)) {} | 57 LanguageModeField::encode(language_mode)), |
| 58 feedback_(feedback) {} |
| 28 | 59 |
| 29 size_t arity() const { return ArityField::decode(bit_field_); } | 60 size_t arity() const { return ArityField::decode(bit_field_); } |
| 30 CallFunctionFlags flags() const { return FlagsField::decode(bit_field_); } | 61 CallFunctionFlags flags() const { return FlagsField::decode(bit_field_); } |
| 31 LanguageMode language_mode() const { | 62 LanguageMode language_mode() const { |
| 32 return LanguageModeField::decode(bit_field_); | 63 return LanguageModeField::decode(bit_field_); |
| 33 } | 64 } |
| 65 VectorSlotPair const& feedback() const { return feedback_; } |
| 34 | 66 |
| 35 bool operator==(CallFunctionParameters const& that) const { | 67 bool operator==(CallFunctionParameters const& that) const { |
| 36 return this->bit_field_ == that.bit_field_; | 68 return this->bit_field_ == that.bit_field_ && |
| 69 this->feedback_ == that.feedback_; |
| 37 } | 70 } |
| 38 bool operator!=(CallFunctionParameters const& that) const { | 71 bool operator!=(CallFunctionParameters const& that) const { |
| 39 return !(*this == that); | 72 return !(*this == that); |
| 40 } | 73 } |
| 41 | 74 |
| 42 private: | 75 private: |
| 43 friend size_t hash_value(CallFunctionParameters const& p) { | 76 friend size_t hash_value(CallFunctionParameters const& p) { |
| 44 return p.bit_field_; | 77 return base::hash_combine(p.bit_field_, p.feedback_); |
| 45 } | 78 } |
| 46 | 79 |
| 47 typedef BitField<size_t, 0, 28> ArityField; | 80 typedef BitField<size_t, 0, 28> ArityField; |
| 48 typedef BitField<CallFunctionFlags, 28, 2> FlagsField; | 81 typedef BitField<CallFunctionFlags, 28, 2> FlagsField; |
| 49 typedef BitField<LanguageMode, 30, 2> LanguageModeField; | 82 typedef BitField<LanguageMode, 30, 2> LanguageModeField; |
| 50 | 83 |
| 51 const uint32_t bit_field_; | 84 const uint32_t bit_field_; |
| 85 const VectorSlotPair feedback_; |
| 52 }; | 86 }; |
| 53 | 87 |
| 54 size_t hash_value(CallFunctionParameters const&); | 88 size_t hash_value(CallFunctionParameters const&); |
| 55 | 89 |
| 56 std::ostream& operator<<(std::ostream&, CallFunctionParameters const&); | 90 std::ostream& operator<<(std::ostream&, CallFunctionParameters const&); |
| 57 | 91 |
| 58 const CallFunctionParameters& CallFunctionParametersOf(const Operator* op); | 92 const CallFunctionParameters& CallFunctionParametersOf(const Operator* op); |
| 59 | 93 |
| 60 | 94 |
| 61 // Defines the arity and the ID for a runtime function call. This is used as a | 95 // Defines the arity and the ID for a runtime function call. This is used as a |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 bool operator==(ContextAccess const&, ContextAccess const&); | 139 bool operator==(ContextAccess const&, ContextAccess const&); |
| 106 bool operator!=(ContextAccess const&, ContextAccess const&); | 140 bool operator!=(ContextAccess const&, ContextAccess const&); |
| 107 | 141 |
| 108 size_t hash_value(ContextAccess const&); | 142 size_t hash_value(ContextAccess const&); |
| 109 | 143 |
| 110 std::ostream& operator<<(std::ostream&, ContextAccess const&); | 144 std::ostream& operator<<(std::ostream&, ContextAccess const&); |
| 111 | 145 |
| 112 ContextAccess const& ContextAccessOf(Operator const*); | 146 ContextAccess const& ContextAccessOf(Operator const*); |
| 113 | 147 |
| 114 | 148 |
| 115 // A ResolvedFeedbackSlot needs to query the type feedback vector to get it's | |
| 116 // index in the vector. | |
| 117 class ResolvedFeedbackSlot { | |
| 118 public: | |
| 119 ResolvedFeedbackSlot(Handle<TypeFeedbackVector> vector, | |
| 120 FeedbackVectorICSlot slot) | |
| 121 : slot_(slot), | |
| 122 index_(slot == FeedbackVectorICSlot::Invalid() ? -1 : vector->GetIndex( | |
| 123 slot)) {} | |
| 124 ResolvedFeedbackSlot() : slot_(FeedbackVectorICSlot::Invalid()), index_(-1) {} | |
| 125 | |
| 126 FeedbackVectorICSlot slot() const { return slot_; } | |
| 127 int index() const { return index_; } | |
| 128 | |
| 129 private: | |
| 130 const FeedbackVectorICSlot slot_; | |
| 131 const int index_; | |
| 132 }; | |
| 133 | |
| 134 | |
| 135 bool operator==(ResolvedFeedbackSlot const& lhs, | |
| 136 ResolvedFeedbackSlot const& rhs); | |
| 137 | |
| 138 | |
| 139 // Defines the name for a dynamic variable lookup. The {check_bitset} allows to | 149 // Defines the name for a dynamic variable lookup. The {check_bitset} allows to |
| 140 // inline checks whether the lookup yields in a global variable. This is used as | 150 // inline checks whether the lookup yields in a global variable. This is used as |
| 141 // a parameter by JSLoadDynamicGlobal and JSStoreDynamicGlobal operators. | 151 // a parameter by JSLoadDynamicGlobal and JSStoreDynamicGlobal operators. |
| 142 class DynamicGlobalAccess final { | 152 class DynamicGlobalAccess final { |
| 143 public: | 153 public: |
| 144 DynamicGlobalAccess(const Handle<String>& name, uint32_t check_bitset, | 154 DynamicGlobalAccess(const Handle<String>& name, uint32_t check_bitset, |
| 145 const ResolvedFeedbackSlot& feedback, | 155 const VectorSlotPair& feedback, ContextualMode mode); |
| 146 ContextualMode mode); | |
| 147 | 156 |
| 148 const Handle<String>& name() const { return name_; } | 157 const Handle<String>& name() const { return name_; } |
| 149 uint32_t check_bitset() const { return check_bitset_; } | 158 uint32_t check_bitset() const { return check_bitset_; } |
| 150 const ResolvedFeedbackSlot& feedback() const { return feedback_; } | 159 const VectorSlotPair& feedback() const { return feedback_; } |
| 151 ContextualMode mode() const { return mode_; } | 160 ContextualMode mode() const { return mode_; } |
| 152 | 161 |
| 153 // Indicates that an inline check is disabled. | 162 // Indicates that an inline check is disabled. |
| 154 bool RequiresFullCheck() const { | 163 bool RequiresFullCheck() const { |
| 155 return check_bitset() == kFullCheckRequired; | 164 return check_bitset() == kFullCheckRequired; |
| 156 } | 165 } |
| 157 | 166 |
| 158 // Limit of context chain length to which inline check is possible. | 167 // Limit of context chain length to which inline check is possible. |
| 159 static const int kMaxCheckDepth = 30; | 168 static const int kMaxCheckDepth = 30; |
| 160 | 169 |
| 161 // Sentinel for {check_bitset} disabling inline checks. | 170 // Sentinel for {check_bitset} disabling inline checks. |
| 162 static const uint32_t kFullCheckRequired = -1; | 171 static const uint32_t kFullCheckRequired = -1; |
| 163 | 172 |
| 164 private: | 173 private: |
| 165 const Handle<String> name_; | 174 const Handle<String> name_; |
| 166 const uint32_t check_bitset_; | 175 const uint32_t check_bitset_; |
| 167 const ResolvedFeedbackSlot feedback_; | 176 const VectorSlotPair feedback_; |
| 168 const ContextualMode mode_; | 177 const ContextualMode mode_; |
| 169 }; | 178 }; |
| 170 | 179 |
| 171 size_t hash_value(DynamicGlobalAccess const&); | 180 size_t hash_value(DynamicGlobalAccess const&); |
| 172 | 181 |
| 173 bool operator==(DynamicGlobalAccess const&, DynamicGlobalAccess const&); | 182 bool operator==(DynamicGlobalAccess const&, DynamicGlobalAccess const&); |
| 174 bool operator!=(DynamicGlobalAccess const&, DynamicGlobalAccess const&); | 183 bool operator!=(DynamicGlobalAccess const&, DynamicGlobalAccess const&); |
| 175 | 184 |
| 176 std::ostream& operator<<(std::ostream&, DynamicGlobalAccess const&); | 185 std::ostream& operator<<(std::ostream&, DynamicGlobalAccess const&); |
| 177 | 186 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 214 | 223 |
| 215 std::ostream& operator<<(std::ostream&, DynamicContextAccess const&); | 224 std::ostream& operator<<(std::ostream&, DynamicContextAccess const&); |
| 216 | 225 |
| 217 DynamicContextAccess const& DynamicContextAccessOf(Operator const*); | 226 DynamicContextAccess const& DynamicContextAccessOf(Operator const*); |
| 218 | 227 |
| 219 | 228 |
| 220 // Defines the property being loaded from an object by a named load. This is | 229 // Defines the property being loaded from an object by a named load. This is |
| 221 // used as a parameter by JSLoadNamed operators. | 230 // used as a parameter by JSLoadNamed operators. |
| 222 class LoadNamedParameters final { | 231 class LoadNamedParameters final { |
| 223 public: | 232 public: |
| 224 LoadNamedParameters(const Unique<Name>& name, | 233 LoadNamedParameters(const Unique<Name>& name, const VectorSlotPair& feedback, |
| 225 const ResolvedFeedbackSlot& feedback, | |
| 226 ContextualMode contextual_mode) | 234 ContextualMode contextual_mode) |
| 227 : name_(name), feedback_(feedback), contextual_mode_(contextual_mode) {} | 235 : name_(name), feedback_(feedback), contextual_mode_(contextual_mode) {} |
| 228 | 236 |
| 229 const Unique<Name>& name() const { return name_; } | 237 const Unique<Name>& name() const { return name_; } |
| 230 ContextualMode contextual_mode() const { return contextual_mode_; } | 238 ContextualMode contextual_mode() const { return contextual_mode_; } |
| 231 | 239 |
| 232 const ResolvedFeedbackSlot& feedback() const { return feedback_; } | 240 const VectorSlotPair& feedback() const { return feedback_; } |
| 233 | 241 |
| 234 private: | 242 private: |
| 235 const Unique<Name> name_; | 243 const Unique<Name> name_; |
| 236 const ResolvedFeedbackSlot feedback_; | 244 const VectorSlotPair feedback_; |
| 237 const ContextualMode contextual_mode_; | 245 const ContextualMode contextual_mode_; |
| 238 }; | 246 }; |
| 239 | 247 |
| 240 bool operator==(LoadNamedParameters const&, LoadNamedParameters const&); | 248 bool operator==(LoadNamedParameters const&, LoadNamedParameters const&); |
| 241 bool operator!=(LoadNamedParameters const&, LoadNamedParameters const&); | 249 bool operator!=(LoadNamedParameters const&, LoadNamedParameters const&); |
| 242 | 250 |
| 243 size_t hash_value(LoadNamedParameters const&); | 251 size_t hash_value(LoadNamedParameters const&); |
| 244 | 252 |
| 245 std::ostream& operator<<(std::ostream&, LoadNamedParameters const&); | 253 std::ostream& operator<<(std::ostream&, LoadNamedParameters const&); |
| 246 | 254 |
| 247 const LoadNamedParameters& LoadNamedParametersOf(const Operator* op); | 255 const LoadNamedParameters& LoadNamedParametersOf(const Operator* op); |
| 248 | 256 |
| 249 | 257 |
| 250 // Defines the property being loaded from an object. This is | 258 // Defines the property being loaded from an object. This is |
| 251 // used as a parameter by JSLoadProperty operators. | 259 // used as a parameter by JSLoadProperty operators. |
| 252 class LoadPropertyParameters final { | 260 class LoadPropertyParameters final { |
| 253 public: | 261 public: |
| 254 explicit LoadPropertyParameters(const ResolvedFeedbackSlot& feedback) | 262 explicit LoadPropertyParameters(const VectorSlotPair& feedback) |
| 255 : feedback_(feedback) {} | 263 : feedback_(feedback) {} |
| 256 | 264 |
| 257 const ResolvedFeedbackSlot& feedback() const { return feedback_; } | 265 const VectorSlotPair& feedback() const { return feedback_; } |
| 258 | 266 |
| 259 private: | 267 private: |
| 260 const ResolvedFeedbackSlot feedback_; | 268 const VectorSlotPair feedback_; |
| 261 }; | 269 }; |
| 262 | 270 |
| 263 bool operator==(LoadPropertyParameters const&, LoadPropertyParameters const&); | 271 bool operator==(LoadPropertyParameters const&, LoadPropertyParameters const&); |
| 264 bool operator!=(LoadPropertyParameters const&, LoadPropertyParameters const&); | 272 bool operator!=(LoadPropertyParameters const&, LoadPropertyParameters const&); |
| 265 | 273 |
| 266 size_t hash_value(LoadPropertyParameters const&); | 274 size_t hash_value(LoadPropertyParameters const&); |
| 267 | 275 |
| 268 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); | 276 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); |
| 269 | 277 |
| 270 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); | 278 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); |
| 271 | 279 |
| 272 | 280 |
| 273 // Defines the property being stored to an object by a named store. This is | 281 // Defines the property being stored to an object by a named store. This is |
| 274 // used as a parameter by JSStoreNamed operators. | 282 // used as a parameter by JSStoreNamed operators. |
| 275 class StoreNamedParameters final { | 283 class StoreNamedParameters final { |
| 276 public: | 284 public: |
| 277 StoreNamedParameters(LanguageMode language_mode, | 285 StoreNamedParameters(LanguageMode language_mode, |
| 278 const ResolvedFeedbackSlot& feedback, | 286 const VectorSlotPair& feedback, const Unique<Name>& name) |
| 279 const Unique<Name>& name) | |
| 280 : language_mode_(language_mode), name_(name), feedback_(feedback) {} | 287 : language_mode_(language_mode), name_(name), feedback_(feedback) {} |
| 281 | 288 |
| 282 LanguageMode language_mode() const { return language_mode_; } | 289 LanguageMode language_mode() const { return language_mode_; } |
| 283 const ResolvedFeedbackSlot& feedback() const { return feedback_; } | 290 const VectorSlotPair& feedback() const { return feedback_; } |
| 284 const Unique<Name>& name() const { return name_; } | 291 const Unique<Name>& name() const { return name_; } |
| 285 | 292 |
| 286 private: | 293 private: |
| 287 const LanguageMode language_mode_; | 294 const LanguageMode language_mode_; |
| 288 const Unique<Name> name_; | 295 const Unique<Name> name_; |
| 289 const ResolvedFeedbackSlot feedback_; | 296 const VectorSlotPair feedback_; |
| 290 }; | 297 }; |
| 291 | 298 |
| 292 bool operator==(StoreNamedParameters const&, StoreNamedParameters const&); | 299 bool operator==(StoreNamedParameters const&, StoreNamedParameters const&); |
| 293 bool operator!=(StoreNamedParameters const&, StoreNamedParameters const&); | 300 bool operator!=(StoreNamedParameters const&, StoreNamedParameters const&); |
| 294 | 301 |
| 295 size_t hash_value(StoreNamedParameters const&); | 302 size_t hash_value(StoreNamedParameters const&); |
| 296 | 303 |
| 297 std::ostream& operator<<(std::ostream&, StoreNamedParameters const&); | 304 std::ostream& operator<<(std::ostream&, StoreNamedParameters const&); |
| 298 | 305 |
| 299 const StoreNamedParameters& StoreNamedParametersOf(const Operator* op); | 306 const StoreNamedParameters& StoreNamedParametersOf(const Operator* op); |
| 300 | 307 |
| 301 | 308 |
| 302 // Defines the property being stored to an object. This is used as a parameter | 309 // Defines the property being stored to an object. This is used as a parameter |
| 303 // by JSStoreProperty operators. | 310 // by JSStoreProperty operators. |
| 304 class StorePropertyParameters final { | 311 class StorePropertyParameters final { |
| 305 public: | 312 public: |
| 306 StorePropertyParameters(LanguageMode language_mode, | 313 StorePropertyParameters(LanguageMode language_mode, |
| 307 const ResolvedFeedbackSlot& feedback) | 314 const VectorSlotPair& feedback) |
| 308 : language_mode_(language_mode), feedback_(feedback) {} | 315 : language_mode_(language_mode), feedback_(feedback) {} |
| 309 | 316 |
| 310 LanguageMode language_mode() const { return language_mode_; } | 317 LanguageMode language_mode() const { return language_mode_; } |
| 311 const ResolvedFeedbackSlot& feedback() const { return feedback_; } | 318 const VectorSlotPair& feedback() const { return feedback_; } |
| 312 | 319 |
| 313 private: | 320 private: |
| 314 const LanguageMode language_mode_; | 321 const LanguageMode language_mode_; |
| 315 const ResolvedFeedbackSlot feedback_; | 322 const VectorSlotPair feedback_; |
| 316 }; | 323 }; |
| 317 | 324 |
| 318 bool operator==(StorePropertyParameters const&, StorePropertyParameters const&); | 325 bool operator==(StorePropertyParameters const&, StorePropertyParameters const&); |
| 319 bool operator!=(StorePropertyParameters const&, StorePropertyParameters const&); | 326 bool operator!=(StorePropertyParameters const&, StorePropertyParameters const&); |
| 320 | 327 |
| 321 size_t hash_value(StorePropertyParameters const&); | 328 size_t hash_value(StorePropertyParameters const&); |
| 322 | 329 |
| 323 std::ostream& operator<<(std::ostream&, StorePropertyParameters const&); | 330 std::ostream& operator<<(std::ostream&, StorePropertyParameters const&); |
| 324 | 331 |
| 325 const StorePropertyParameters& StorePropertyParametersOf(const Operator* op); | 332 const StorePropertyParameters& StorePropertyParametersOf(const Operator* op); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 385 const Operator* ToName(); | 392 const Operator* ToName(); |
| 386 const Operator* ToObject(); | 393 const Operator* ToObject(); |
| 387 const Operator* Yield(); | 394 const Operator* Yield(); |
| 388 | 395 |
| 389 const Operator* Create(); | 396 const Operator* Create(); |
| 390 const Operator* CreateClosure(Handle<SharedFunctionInfo> shared_info, | 397 const Operator* CreateClosure(Handle<SharedFunctionInfo> shared_info, |
| 391 PretenureFlag pretenure); | 398 PretenureFlag pretenure); |
| 392 const Operator* CreateLiteralArray(int literal_flags); | 399 const Operator* CreateLiteralArray(int literal_flags); |
| 393 const Operator* CreateLiteralObject(int literal_flags); | 400 const Operator* CreateLiteralObject(int literal_flags); |
| 394 | 401 |
| 395 const Operator* CallFunction(size_t arity, CallFunctionFlags flags, | 402 const Operator* CallFunction( |
| 396 LanguageMode language_mode); | 403 size_t arity, CallFunctionFlags flags, LanguageMode language_mode, |
| 404 VectorSlotPair const& feedback = VectorSlotPair()); |
| 397 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); | 405 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); |
| 398 | 406 |
| 399 const Operator* CallConstruct(int arguments); | 407 const Operator* CallConstruct(int arguments); |
| 400 | 408 |
| 401 const Operator* LoadProperty(const ResolvedFeedbackSlot& feedback); | 409 const Operator* LoadProperty(const VectorSlotPair& feedback); |
| 402 const Operator* LoadNamed(const Unique<Name>& name, | 410 const Operator* LoadNamed(const Unique<Name>& name, |
| 403 const ResolvedFeedbackSlot& feedback, | 411 const VectorSlotPair& feedback, |
| 404 ContextualMode contextual_mode = NOT_CONTEXTUAL); | 412 ContextualMode contextual_mode = NOT_CONTEXTUAL); |
| 405 | 413 |
| 406 const Operator* StoreProperty(LanguageMode language_mode, | 414 const Operator* StoreProperty(LanguageMode language_mode, |
| 407 const ResolvedFeedbackSlot& feedback); | 415 const VectorSlotPair& feedback); |
| 408 const Operator* StoreNamed(LanguageMode language_mode, | 416 const Operator* StoreNamed(LanguageMode language_mode, |
| 409 const Unique<Name>& name, | 417 const Unique<Name>& name, |
| 410 const ResolvedFeedbackSlot& feedback); | 418 const VectorSlotPair& feedback); |
| 411 | 419 |
| 412 const Operator* DeleteProperty(LanguageMode language_mode); | 420 const Operator* DeleteProperty(LanguageMode language_mode); |
| 413 | 421 |
| 414 const Operator* HasProperty(); | 422 const Operator* HasProperty(); |
| 415 | 423 |
| 416 const Operator* LoadContext(size_t depth, size_t index, bool immutable); | 424 const Operator* LoadContext(size_t depth, size_t index, bool immutable); |
| 417 const Operator* StoreContext(size_t depth, size_t index); | 425 const Operator* StoreContext(size_t depth, size_t index); |
| 418 | 426 |
| 419 const Operator* LoadDynamicGlobal(const Handle<String>& name, | 427 const Operator* LoadDynamicGlobal(const Handle<String>& name, |
| 420 uint32_t check_bitset, | 428 uint32_t check_bitset, |
| 421 const ResolvedFeedbackSlot& feedback, | 429 const VectorSlotPair& feedback, |
| 422 ContextualMode mode); | 430 ContextualMode mode); |
| 423 const Operator* LoadDynamicContext(const Handle<String>& name, | 431 const Operator* LoadDynamicContext(const Handle<String>& name, |
| 424 uint32_t check_bitset, size_t depth, | 432 uint32_t check_bitset, size_t depth, |
| 425 size_t index); | 433 size_t index); |
| 426 | 434 |
| 427 const Operator* TypeOf(); | 435 const Operator* TypeOf(); |
| 428 const Operator* InstanceOf(); | 436 const Operator* InstanceOf(); |
| 429 | 437 |
| 430 const Operator* ForInDone(); | 438 const Operator* ForInDone(); |
| 431 const Operator* ForInNext(); | 439 const Operator* ForInNext(); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 449 Zone* const zone_; | 457 Zone* const zone_; |
| 450 | 458 |
| 451 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); | 459 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); |
| 452 }; | 460 }; |
| 453 | 461 |
| 454 } // namespace compiler | 462 } // namespace compiler |
| 455 } // namespace internal | 463 } // namespace internal |
| 456 } // namespace v8 | 464 } // namespace v8 |
| 457 | 465 |
| 458 #endif // V8_COMPILER_JS_OPERATOR_H_ | 466 #endif // V8_COMPILER_JS_OPERATOR_H_ |
| OLD | NEW |