OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
382 } | 382 } |
383 | 383 |
384 void MarkRecursive() { | 384 void MarkRecursive() { |
385 is_recursive_ = true; | 385 is_recursive_ = true; |
386 } | 386 } |
387 | 387 |
388 bool is_recursive() const { | 388 bool is_recursive() const { |
389 return is_recursive_; | 389 return is_recursive_; |
390 } | 390 } |
391 | 391 |
| 392 void MarkDependsOnEmptyArrayProtoElements() { |
| 393 depends_on_empty_array_proto_elements_ = true; |
| 394 } |
| 395 |
| 396 bool depends_on_empty_array_proto_elements() { |
| 397 return depends_on_empty_array_proto_elements_; |
| 398 } |
| 399 |
392 void RecordUint32Instruction(HInstruction* instr) { | 400 void RecordUint32Instruction(HInstruction* instr) { |
393 if (uint32_instructions_ == NULL) { | 401 if (uint32_instructions_ == NULL) { |
394 uint32_instructions_ = new(zone()) ZoneList<HInstruction*>(4, zone()); | 402 uint32_instructions_ = new(zone()) ZoneList<HInstruction*>(4, zone()); |
395 } | 403 } |
396 uint32_instructions_->Add(instr, zone()); | 404 uint32_instructions_->Add(instr, zone()); |
397 } | 405 } |
398 | 406 |
399 private: | 407 private: |
400 HConstant* GetConstantInt32(SetOncePointer<HConstant>* pointer, | 408 HConstant* GetConstantInt32(SetOncePointer<HConstant>* pointer, |
401 int32_t integer_value); | 409 int32_t integer_value); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
442 | 450 |
443 SetOncePointer<HBasicBlock> osr_loop_entry_; | 451 SetOncePointer<HBasicBlock> osr_loop_entry_; |
444 SetOncePointer<ZoneList<HUnknownOSRValue*> > osr_values_; | 452 SetOncePointer<ZoneList<HUnknownOSRValue*> > osr_values_; |
445 | 453 |
446 CompilationInfo* info_; | 454 CompilationInfo* info_; |
447 Zone* zone_; | 455 Zone* zone_; |
448 | 456 |
449 bool is_recursive_; | 457 bool is_recursive_; |
450 bool use_optimistic_licm_; | 458 bool use_optimistic_licm_; |
451 bool has_soft_deoptimize_; | 459 bool has_soft_deoptimize_; |
| 460 bool depends_on_empty_array_proto_elements_; |
452 int type_change_checksum_; | 461 int type_change_checksum_; |
453 | 462 |
454 DISALLOW_COPY_AND_ASSIGN(HGraph); | 463 DISALLOW_COPY_AND_ASSIGN(HGraph); |
455 }; | 464 }; |
456 | 465 |
457 | 466 |
458 Zone* HBasicBlock::zone() const { return graph_->zone(); } | 467 Zone* HBasicBlock::zone() const { return graph_->zone(); } |
459 | 468 |
460 | 469 |
461 // Type of stack frame an environment might refer to. | 470 // Type of stack frame an environment might refer to. |
(...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
995 ElementsKind elements_kind, | 1004 ElementsKind elements_kind, |
996 bool is_store); | 1005 bool is_store); |
997 | 1006 |
998 HInstruction* BuildFastElementAccess( | 1007 HInstruction* BuildFastElementAccess( |
999 HValue* elements, | 1008 HValue* elements, |
1000 HValue* checked_key, | 1009 HValue* checked_key, |
1001 HValue* val, | 1010 HValue* val, |
1002 HValue* dependency, | 1011 HValue* dependency, |
1003 ElementsKind elements_kind, | 1012 ElementsKind elements_kind, |
1004 bool is_store, | 1013 bool is_store, |
| 1014 LoadKeyedHoleMode load_mode, |
1005 KeyedAccessStoreMode store_mode); | 1015 KeyedAccessStoreMode store_mode); |
1006 | 1016 |
1007 HValue* BuildCheckForCapacityGrow(HValue* object, | 1017 HValue* BuildCheckForCapacityGrow(HValue* object, |
1008 HValue* elements, | 1018 HValue* elements, |
1009 ElementsKind kind, | 1019 ElementsKind kind, |
1010 HValue* length, | 1020 HValue* length, |
1011 HValue* key, | 1021 HValue* key, |
1012 bool is_js_array); | 1022 bool is_js_array); |
1013 | 1023 |
1014 HValue* BuildCopyElementsOnWrite(HValue* object, | 1024 HValue* BuildCopyElementsOnWrite(HValue* object, |
1015 HValue* elements, | 1025 HValue* elements, |
1016 ElementsKind kind, | 1026 ElementsKind kind, |
1017 HValue* length); | 1027 HValue* length); |
1018 | 1028 |
1019 HInstruction* BuildUncheckedMonomorphicElementAccess( | 1029 HInstruction* BuildUncheckedMonomorphicElementAccess( |
1020 HValue* object, | 1030 HValue* object, |
1021 HValue* key, | 1031 HValue* key, |
1022 HValue* val, | 1032 HValue* val, |
1023 HCheckMaps* mapcheck, | 1033 HCheckMaps* mapcheck, |
1024 bool is_js_array, | 1034 bool is_js_array, |
1025 ElementsKind elements_kind, | 1035 ElementsKind elements_kind, |
1026 bool is_store, | 1036 bool is_store, |
| 1037 LoadKeyedHoleMode load_mode, |
1027 KeyedAccessStoreMode store_mode, | 1038 KeyedAccessStoreMode store_mode, |
1028 Representation checked_index_representation = Representation::None()); | 1039 Representation checked_index_representation = Representation::None()); |
1029 | 1040 |
1030 HInstruction* BuildStoreMap(HValue* object, HValue* map); | 1041 HInstruction* BuildStoreMap(HValue* object, HValue* map); |
1031 HInstruction* BuildStoreMap(HValue* object, Handle<Map> map); | 1042 HInstruction* BuildStoreMap(HValue* object, Handle<Map> map); |
1032 | 1043 |
1033 HLoadNamedField* AddLoadElements(HValue *object, HValue *typecheck = NULL); | 1044 HLoadNamedField* AddLoadElements(HValue *object, HValue *typecheck = NULL); |
1034 | 1045 |
1035 class IfBuilder { | 1046 class IfBuilder { |
1036 public: | 1047 public: |
(...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2013 EmbeddedVector<char, 64> filename_; | 2024 EmbeddedVector<char, 64> filename_; |
2014 HeapStringAllocator string_allocator_; | 2025 HeapStringAllocator string_allocator_; |
2015 StringStream trace_; | 2026 StringStream trace_; |
2016 int indent_; | 2027 int indent_; |
2017 }; | 2028 }; |
2018 | 2029 |
2019 | 2030 |
2020 } } // namespace v8::internal | 2031 } } // namespace v8::internal |
2021 | 2032 |
2022 #endif // V8_HYDROGEN_H_ | 2033 #endif // V8_HYDROGEN_H_ |
OLD | NEW |