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 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
267 | 267 |
268 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); | 268 std::ostream& operator<<(std::ostream&, LoadPropertyParameters const&); |
269 | 269 |
270 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); | 270 const LoadPropertyParameters& LoadPropertyParametersOf(const Operator* op); |
271 | 271 |
272 | 272 |
273 // Defines the property being stored to an object by a named store. This is | 273 // Defines the property being stored to an object by a named store. This is |
274 // used as a parameter by JSStoreNamed operators. | 274 // used as a parameter by JSStoreNamed operators. |
275 class StoreNamedParameters final { | 275 class StoreNamedParameters final { |
276 public: | 276 public: |
277 StoreNamedParameters(LanguageMode language_mode, const Unique<Name>& name) | 277 StoreNamedParameters(LanguageMode language_mode, |
278 : language_mode_(language_mode), name_(name) {} | 278 const ResolvedFeedbackSlot& feedback, |
279 const Unique<Name>& name) | |
280 : language_mode_(language_mode), name_(name), feedback_(feedback) {} | |
279 | 281 |
280 LanguageMode language_mode() const { return language_mode_; } | 282 LanguageMode language_mode() const { return language_mode_; } |
283 const ResolvedFeedbackSlot& feedback() const { return feedback_; } | |
281 const Unique<Name>& name() const { return name_; } | 284 const Unique<Name>& name() const { return name_; } |
282 | 285 |
283 private: | 286 private: |
284 const LanguageMode language_mode_; | 287 const LanguageMode language_mode_; |
285 const Unique<Name> name_; | 288 const Unique<Name> name_; |
289 const ResolvedFeedbackSlot feedback_; | |
286 }; | 290 }; |
287 | 291 |
288 bool operator==(StoreNamedParameters const&, StoreNamedParameters const&); | 292 bool operator==(StoreNamedParameters const&, StoreNamedParameters const&); |
289 bool operator!=(StoreNamedParameters const&, StoreNamedParameters const&); | 293 bool operator!=(StoreNamedParameters const&, StoreNamedParameters const&); |
290 | 294 |
291 size_t hash_value(StoreNamedParameters const&); | 295 size_t hash_value(StoreNamedParameters const&); |
292 | 296 |
293 std::ostream& operator<<(std::ostream&, StoreNamedParameters const&); | 297 std::ostream& operator<<(std::ostream&, StoreNamedParameters const&); |
294 | 298 |
295 const StoreNamedParameters& StoreNamedParametersOf(const Operator* op); | 299 const StoreNamedParameters& StoreNamedParametersOf(const Operator* op); |
296 | 300 |
297 | 301 |
302 // Defines the property being loaded from an object. This is | |
Michael Starzinger
2015/06/15 14:20:11
nit: s/loaded from an object/stored to an object/
mvstanton
2015/06/21 13:37:36
Done.
| |
303 // used as a parameter by JSLoadProperty operators. | |
Michael Starzinger
2015/06/15 14:20:11
nit: s/JSLoadProperty/JSStoreProperty/
mvstanton
2015/06/21 13:37:36
thx, done.
| |
304 class StorePropertyParameters final { | |
305 public: | |
306 StorePropertyParameters(LanguageMode language_mode, | |
307 const ResolvedFeedbackSlot& feedback) | |
308 : language_mode_(language_mode), feedback_(feedback) {} | |
309 | |
310 LanguageMode language_mode() const { return language_mode_; } | |
311 const ResolvedFeedbackSlot& feedback() const { return feedback_; } | |
312 | |
313 private: | |
314 const LanguageMode language_mode_; | |
315 const ResolvedFeedbackSlot feedback_; | |
316 }; | |
317 | |
318 bool operator==(StorePropertyParameters const&, StorePropertyParameters const&); | |
319 bool operator!=(StorePropertyParameters const&, StorePropertyParameters const&); | |
320 | |
321 size_t hash_value(StorePropertyParameters const&); | |
322 | |
323 std::ostream& operator<<(std::ostream&, StorePropertyParameters const&); | |
324 | |
325 const StorePropertyParameters& StorePropertyParametersOf(const Operator* op); | |
326 | |
327 | |
298 // Defines shared information for the closure that should be created. This is | 328 // Defines shared information for the closure that should be created. This is |
299 // used as a parameter by JSCreateClosure operators. | 329 // used as a parameter by JSCreateClosure operators. |
300 class CreateClosureParameters final { | 330 class CreateClosureParameters final { |
301 public: | 331 public: |
302 CreateClosureParameters(Handle<SharedFunctionInfo> shared_info, | 332 CreateClosureParameters(Handle<SharedFunctionInfo> shared_info, |
303 PretenureFlag pretenure) | 333 PretenureFlag pretenure) |
304 : shared_info_(shared_info), pretenure_(pretenure) {} | 334 : shared_info_(shared_info), pretenure_(pretenure) {} |
305 | 335 |
306 Handle<SharedFunctionInfo> shared_info() const { return shared_info_; } | 336 Handle<SharedFunctionInfo> shared_info() const { return shared_info_; } |
307 PretenureFlag pretenure() const { return pretenure_; } | 337 PretenureFlag pretenure() const { return pretenure_; } |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
366 LanguageMode language_mode); | 396 LanguageMode language_mode); |
367 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); | 397 const Operator* CallRuntime(Runtime::FunctionId id, size_t arity); |
368 | 398 |
369 const Operator* CallConstruct(int arguments); | 399 const Operator* CallConstruct(int arguments); |
370 | 400 |
371 const Operator* LoadProperty(const ResolvedFeedbackSlot& feedback); | 401 const Operator* LoadProperty(const ResolvedFeedbackSlot& feedback); |
372 const Operator* LoadNamed(const Unique<Name>& name, | 402 const Operator* LoadNamed(const Unique<Name>& name, |
373 const ResolvedFeedbackSlot& feedback, | 403 const ResolvedFeedbackSlot& feedback, |
374 ContextualMode contextual_mode = NOT_CONTEXTUAL); | 404 ContextualMode contextual_mode = NOT_CONTEXTUAL); |
375 | 405 |
376 const Operator* StoreProperty(LanguageMode language_mode); | 406 const Operator* StoreProperty(LanguageMode language_mode, |
407 const ResolvedFeedbackSlot& feedback); | |
377 const Operator* StoreNamed(LanguageMode language_mode, | 408 const Operator* StoreNamed(LanguageMode language_mode, |
409 const ResolvedFeedbackSlot& feedback, | |
378 const Unique<Name>& name); | 410 const Unique<Name>& name); |
Michael Starzinger
2015/06/15 14:20:11
nit: IMHO the name should go first or at least bef
mvstanton
2015/06/21 13:37:36
Done.
| |
379 | 411 |
380 const Operator* DeleteProperty(LanguageMode language_mode); | 412 const Operator* DeleteProperty(LanguageMode language_mode); |
381 | 413 |
382 const Operator* HasProperty(); | 414 const Operator* HasProperty(); |
383 | 415 |
384 const Operator* LoadContext(size_t depth, size_t index, bool immutable); | 416 const Operator* LoadContext(size_t depth, size_t index, bool immutable); |
385 const Operator* StoreContext(size_t depth, size_t index); | 417 const Operator* StoreContext(size_t depth, size_t index); |
386 | 418 |
387 const Operator* LoadDynamicGlobal(const Handle<String>& name, | 419 const Operator* LoadDynamicGlobal(const Handle<String>& name, |
388 uint32_t check_bitset, | 420 uint32_t check_bitset, |
(...skipping 28 matching lines...) Expand all Loading... | |
417 Zone* const zone_; | 449 Zone* const zone_; |
418 | 450 |
419 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); | 451 DISALLOW_COPY_AND_ASSIGN(JSOperatorBuilder); |
420 }; | 452 }; |
421 | 453 |
422 } // namespace compiler | 454 } // namespace compiler |
423 } // namespace internal | 455 } // namespace internal |
424 } // namespace v8 | 456 } // namespace v8 |
425 | 457 |
426 #endif // V8_COMPILER_JS_OPERATOR_H_ | 458 #endif // V8_COMPILER_JS_OPERATOR_H_ |
OLD | NEW |