Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: src/full-codegen.h

Issue 346223007: Do not eagerly update allow_osr_at_loop_nesting_level. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: addressed comments Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | src/full-codegen.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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_FULL_CODEGEN_H_ 5 #ifndef V8_FULL_CODEGEN_H_
6 #define V8_FULL_CODEGEN_H_ 6 #define V8_FULL_CODEGEN_H_
7 7
8 #include "src/v8.h" 8 #include "src/v8.h"
9 9
10 #include "src/allocation.h" 10 #include "src/allocation.h"
(...skipping 872 matching lines...) Expand 10 before | Expand all | Expand 10 after
883 Address pc(uint32_t index) { 883 Address pc(uint32_t index) {
884 return instruction_start_ + pc_offset(index); 884 return instruction_start_ + pc_offset(index);
885 } 885 }
886 886
887 enum BackEdgeState { 887 enum BackEdgeState {
888 INTERRUPT, 888 INTERRUPT,
889 ON_STACK_REPLACEMENT, 889 ON_STACK_REPLACEMENT,
890 OSR_AFTER_STACK_CHECK 890 OSR_AFTER_STACK_CHECK
891 }; 891 };
892 892
893 // Patch all interrupts with allowed loop depth in the unoptimized code to 893 // Increase allowed loop nesting level by one and patch those matching loops.
894 // unconditionally call replacement_code. 894 static void Patch(Isolate* isolate, Code* unoptimized_code);
895 static void Patch(Isolate* isolate,
896 Code* unoptimized_code);
897 895
898 // Patch the back edge to the target state, provided the correct callee. 896 // Patch the back edge to the target state, provided the correct callee.
899 static void PatchAt(Code* unoptimized_code, 897 static void PatchAt(Code* unoptimized_code,
900 Address pc, 898 Address pc,
901 BackEdgeState target_state, 899 BackEdgeState target_state,
902 Code* replacement_code); 900 Code* replacement_code);
903 901
904 // Change all patched back edges back to normal interrupts. 902 // Change all patched back edges back to normal interrupts.
905 static void Revert(Isolate* isolate, 903 static void Revert(Isolate* isolate,
906 Code* unoptimized_code); 904 Code* unoptimized_code);
907 905
908 // Change a back edge patched for on-stack replacement to perform a 906 // Change a back edge patched for on-stack replacement to perform a
909 // stack check first. 907 // stack check first.
910 static void AddStackCheck(Handle<Code> code, uint32_t pc_offset); 908 static void AddStackCheck(Handle<Code> code, uint32_t pc_offset);
911 909
912 // Revert the patch by AddStackCheck. 910 // Revert the patch by AddStackCheck.
913 static void RemoveStackCheck(Handle<Code> code, uint32_t pc_offset); 911 static void RemoveStackCheck(Handle<Code> code, uint32_t pc_offset);
914 912
915 // Return the current patch state of the back edge. 913 // Return the current patch state of the back edge.
916 static BackEdgeState GetBackEdgeState(Isolate* isolate, 914 static BackEdgeState GetBackEdgeState(Isolate* isolate,
917 Code* unoptimized_code, 915 Code* unoptimized_code,
918 Address pc_after); 916 Address pc_after);
919 917
920 #ifdef DEBUG 918 #ifdef DEBUG
921 // Verify that all back edges of a certain loop depth are patched. 919 // Verify that all back edges of a certain loop depth are patched.
922 static bool Verify(Isolate* isolate, 920 static bool Verify(Isolate* isolate, Code* unoptimized_code);
923 Code* unoptimized_code,
924 int loop_nesting_level);
925 #endif // DEBUG 921 #endif // DEBUG
926 922
927 private: 923 private:
928 Address entry_at(uint32_t index) { 924 Address entry_at(uint32_t index) {
929 ASSERT(index < length_); 925 ASSERT(index < length_);
930 return start_ + index * kEntrySize; 926 return start_ + index * kEntrySize;
931 } 927 }
932 928
933 static const int kTableLengthSize = kIntSize; 929 static const int kTableLengthSize = kIntSize;
934 static const int kAstIdOffset = 0 * kIntSize; 930 static const int kAstIdOffset = 0 * kIntSize;
935 static const int kPcOffsetOffset = 1 * kIntSize; 931 static const int kPcOffsetOffset = 1 * kIntSize;
936 static const int kLoopDepthOffset = 2 * kIntSize; 932 static const int kLoopDepthOffset = 2 * kIntSize;
937 static const int kEntrySize = 3 * kIntSize; 933 static const int kEntrySize = 3 * kIntSize;
938 934
939 Address start_; 935 Address start_;
940 Address instruction_start_; 936 Address instruction_start_;
941 uint32_t length_; 937 uint32_t length_;
942 }; 938 };
943 939
944 940
945 } } // namespace v8::internal 941 } } // namespace v8::internal
946 942
947 #endif // V8_FULL_CODEGEN_H_ 943 #endif // V8_FULL_CODEGEN_H_
OLDNEW
« no previous file with comments | « no previous file | src/full-codegen.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698