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 |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
220 | 220 |
221 bool operator==(DynamicContextAccess const&, DynamicContextAccess const&); | 221 bool operator==(DynamicContextAccess const&, DynamicContextAccess const&); |
222 bool operator!=(DynamicContextAccess const&, DynamicContextAccess const&); | 222 bool operator!=(DynamicContextAccess const&, DynamicContextAccess const&); |
223 | 223 |
224 std::ostream& operator<<(std::ostream&, DynamicContextAccess const&); | 224 std::ostream& operator<<(std::ostream&, DynamicContextAccess const&); |
225 | 225 |
226 DynamicContextAccess const& DynamicContextAccessOf(Operator const*); | 226 DynamicContextAccess const& DynamicContextAccessOf(Operator const*); |
227 | 227 |
228 | 228 |
229 // 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 |
230 // used as a parameter by JSLoadNamed operators. | 230 // used as a parameter by JSLoadNamed and JSLoadGlobal operators. |
231 class LoadNamedParameters final { | 231 class LoadNamedParameters final { |
232 public: | 232 public: |
233 LoadNamedParameters(const Unique<Name>& name, const VectorSlotPair& feedback, | 233 LoadNamedParameters(const Unique<Name>& name, const VectorSlotPair& feedback, |
234 ContextualMode contextual_mode) | 234 ContextualMode contextual_mode) |
235 : name_(name), feedback_(feedback), contextual_mode_(contextual_mode) {} | 235 : name_(name), feedback_(feedback), contextual_mode_(contextual_mode) {} |
236 | 236 |
237 const Unique<Name>& name() const { return name_; } | 237 const Unique<Name>& name() const { return name_; } |
238 ContextualMode contextual_mode() const { return contextual_mode_; } | 238 ContextualMode contextual_mode() const { return contextual_mode_; } |
239 | 239 |
240 const VectorSlotPair& feedback() const { return feedback_; } | 240 const VectorSlotPair& feedback() const { return feedback_; } |
241 | 241 |
242 private: | 242 private: |
243 const Unique<Name> name_; | 243 const Unique<Name> name_; |
244 const VectorSlotPair feedback_; | 244 const VectorSlotPair feedback_; |
245 const ContextualMode contextual_mode_; | 245 const ContextualMode contextual_mode_; |
246 }; | 246 }; |
247 | 247 |
248 bool operator==(LoadNamedParameters const&, LoadNamedParameters const&); | 248 bool operator==(LoadNamedParameters const&, LoadNamedParameters const&); |
249 bool operator!=(LoadNamedParameters const&, LoadNamedParameters const&); | 249 bool operator!=(LoadNamedParameters const&, LoadNamedParameters const&); |
250 | 250 |
251 size_t hash_value(LoadNamedParameters const&); | 251 size_t hash_value(LoadNamedParameters const&); |
252 | 252 |
253 std::ostream& operator<<(std::ostream&, LoadNamedParameters const&); | 253 std::ostream& operator<<(std::ostream&, LoadNamedParameters const&); |
254 | 254 |
255 const LoadNamedParameters& LoadNamedParametersOf(const Operator* op); | 255 const LoadNamedParameters& LoadNamedParametersOf(const Operator* op); |
256 | 256 |
| 257 const LoadNamedParameters& LoadGlobalParametersOf(const Operator* op); |
| 258 |
257 | 259 |
258 // Defines the property being loaded from an object. This is | 260 // Defines the property being loaded from an object. This is |
259 // used as a parameter by JSLoadProperty operators. | 261 // used as a parameter by JSLoadProperty operators. |
260 class LoadPropertyParameters final { | 262 class LoadPropertyParameters final { |
261 public: | 263 public: |
262 explicit LoadPropertyParameters(const VectorSlotPair& feedback) | 264 explicit LoadPropertyParameters(const VectorSlotPair& feedback) |
263 : feedback_(feedback) {} | 265 : feedback_(feedback) {} |
264 | 266 |
265 const VectorSlotPair& feedback() const { return feedback_; } | 267 const VectorSlotPair& feedback() const { return feedback_; } |
266 | 268 |
267 private: | 269 private: |
268 const VectorSlotPair feedback_; | 270 const VectorSlotPair feedback_; |
269 }; | 271 }; |
270 | 272 |
271 bool operator==(LoadPropertyParameters const&, LoadPropertyParameters const&); | 273 bool operator==(LoadPropertyParameters const&, LoadPropertyParameters const&); |
272 bool operator!=(LoadPropertyParameters const&, LoadPropertyParameters const&); | 274 bool operator!=(LoadPropertyParameters const&, LoadPropertyParameters const&); |
273 | 275 |
274 size_t hash_value(LoadPropertyParameters const&); | 276 size_t hash_value(LoadPropertyParameters const&); |
275 | 277 |
276 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); | 278 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); |
277 | 279 |
278 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); | 280 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); |
279 | 281 |
280 | 282 |
281 // Defines the property being stored to an object by a named store. This is | 283 // Defines the property being stored to an object by a named store. This is |
282 // used as a parameter by JSStoreNamed operators. | 284 // used as a parameter by JSStoreNamed and JSStoreGlobal operators. |
283 class StoreNamedParameters final { | 285 class StoreNamedParameters final { |
284 public: | 286 public: |
285 StoreNamedParameters(LanguageMode language_mode, | 287 StoreNamedParameters(LanguageMode language_mode, |
286 const VectorSlotPair& feedback, const Unique<Name>& name) | 288 const VectorSlotPair& feedback, const Unique<Name>& name) |
287 : language_mode_(language_mode), name_(name), feedback_(feedback) {} | 289 : language_mode_(language_mode), name_(name), feedback_(feedback) {} |
288 | 290 |
289 LanguageMode language_mode() const { return language_mode_; } | 291 LanguageMode language_mode() const { return language_mode_; } |
290 const VectorSlotPair& feedback() const { return feedback_; } | 292 const VectorSlotPair& feedback() const { return feedback_; } |
291 const Unique<Name>& name() const { return name_; } | 293 const Unique<Name>& name() const { return name_; } |
292 | 294 |
293 private: | 295 private: |
294 const LanguageMode language_mode_; | 296 const LanguageMode language_mode_; |
295 const Unique<Name> name_; | 297 const Unique<Name> name_; |
296 const VectorSlotPair feedback_; | 298 const VectorSlotPair feedback_; |
297 }; | 299 }; |
298 | 300 |
299 bool operator==(StoreNamedParameters const&, StoreNamedParameters const&); | 301 bool operator==(StoreNamedParameters const&, StoreNamedParameters const&); |
300 bool operator!=(StoreNamedParameters const&, StoreNamedParameters const&); | 302 bool operator!=(StoreNamedParameters const&, StoreNamedParameters const&); |
301 | 303 |
302 size_t hash_value(StoreNamedParameters const&); | 304 size_t hash_value(StoreNamedParameters const&); |
303 | 305 |
304 std::ostream& operator<<(std::ostream&, StoreNamedParameters const&); | 306 std::ostream& operator<<(std::ostream&, StoreNamedParameters const&); |
305 | 307 |
306 const StoreNamedParameters& StoreNamedParametersOf(const Operator* op); | 308 const StoreNamedParameters& StoreNamedParametersOf(const Operator* op); |
307 | 309 |
| 310 const StoreNamedParameters& StoreGlobalParametersOf(const Operator* op); |
| 311 |
308 | 312 |
309 // Defines the property being stored to an object. This is used as a parameter | 313 // Defines the property being stored to an object. This is used as a parameter |
310 // by JSStoreProperty operators. | 314 // by JSStoreProperty operators. |
311 class StorePropertyParameters final { | 315 class StorePropertyParameters final { |
312 public: | 316 public: |
313 StorePropertyParameters(LanguageMode language_mode, | 317 StorePropertyParameters(LanguageMode language_mode, |
314 const VectorSlotPair& feedback) | 318 const VectorSlotPair& feedback) |
315 : language_mode_(language_mode), feedback_(feedback) {} | 319 : language_mode_(language_mode), feedback_(feedback) {} |
316 | 320 |
317 LanguageMode language_mode() const { return language_mode_; } | 321 LanguageMode language_mode() const { return language_mode_; } |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
401 | 405 |
402 const Operator* CallFunction( | 406 const Operator* CallFunction( |
403 size_t arity, CallFunctionFlags flags, LanguageMode language_mode, | 407 size_t arity, CallFunctionFlags flags, LanguageMode language_mode, |
404 VectorSlotPair const& feedback = VectorSlotPair()); | 408 VectorSlotPair const& feedback = VectorSlotPair()); |
405 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); | 409 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); |
406 | 410 |
407 const Operator* CallConstruct(int arguments); | 411 const Operator* CallConstruct(int arguments); |
408 | 412 |
409 const Operator* LoadProperty(const VectorSlotPair& feedback); | 413 const Operator* LoadProperty(const VectorSlotPair& feedback); |
410 const Operator* LoadNamed(const Unique<Name>& name, | 414 const Operator* LoadNamed(const Unique<Name>& name, |
411 const VectorSlotPair& feedback, | 415 const VectorSlotPair& feedback); |
412 ContextualMode contextual_mode = NOT_CONTEXTUAL); | |
413 | 416 |
414 const Operator* StoreProperty(LanguageMode language_mode, | 417 const Operator* StoreProperty(LanguageMode language_mode, |
415 const VectorSlotPair& feedback); | 418 const VectorSlotPair& feedback); |
416 const Operator* StoreNamed(LanguageMode language_mode, | 419 const Operator* StoreNamed(LanguageMode language_mode, |
417 const Unique<Name>& name, | 420 const Unique<Name>& name, |
418 const VectorSlotPair& feedback); | 421 const VectorSlotPair& feedback); |
419 | 422 |
420 const Operator* DeleteProperty(LanguageMode language_mode); | 423 const Operator* DeleteProperty(LanguageMode language_mode); |
421 | 424 |
422 const Operator* HasProperty(); | 425 const Operator* HasProperty(); |
423 | 426 |
| 427 const Operator* LoadGlobal(const Unique<Name>& name, |
| 428 const VectorSlotPair& feedback, |
| 429 ContextualMode contextual_mode = NOT_CONTEXTUAL); |
| 430 const Operator* StoreGlobal(LanguageMode language_mode, |
| 431 const Unique<Name>& name, |
| 432 const VectorSlotPair& feedback); |
| 433 |
424 const Operator* LoadContext(size_t depth, size_t index, bool immutable); | 434 const Operator* LoadContext(size_t depth, size_t index, bool immutable); |
425 const Operator* StoreContext(size_t depth, size_t index); | 435 const Operator* StoreContext(size_t depth, size_t index); |
426 | 436 |
427 const Operator* LoadDynamicGlobal(const Handle<String>& name, | 437 const Operator* LoadDynamicGlobal(const Handle<String>& name, |
428 uint32_t check_bitset, | 438 uint32_t check_bitset, |
429 const VectorSlotPair& feedback, | 439 const VectorSlotPair& feedback, |
430 ContextualMode mode); | 440 ContextualMode mode); |
431 const Operator* LoadDynamicContext(const Handle<String>& name, | 441 const Operator* LoadDynamicContext(const Handle<String>& name, |
432 uint32_t check_bitset, size_t depth, | 442 uint32_t check_bitset, size_t depth, |
433 size_t index); | 443 size_t index); |
(...skipping 23 matching lines...) Expand all Loading... |
457 Zone* const zone_; | 467 Zone* const zone_; |
458 | 468 |
459 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); | 469 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); |
460 }; | 470 }; |
461 | 471 |
462 } // namespace compiler | 472 } // namespace compiler |
463 } // namespace internal | 473 } // namespace internal |
464 } // namespace v8 | 474 } // namespace v8 |
465 | 475 |
466 #endif // V8_COMPILER_JS_OPERATOR_H_ | 476 #endif // V8_COMPILER_JS_OPERATOR_H_ |
OLD | NEW |