OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 24 matching lines...) Expand all Loading... |
35 #include "global-handles.h" | 35 #include "global-handles.h" |
36 #include "macro-assembler.h" | 36 #include "macro-assembler.h" |
37 #include "prettyprinter.h" | 37 #include "prettyprinter.h" |
38 | 38 |
39 | 39 |
40 namespace v8 { | 40 namespace v8 { |
41 namespace internal { | 41 namespace internal { |
42 | 42 |
43 static MemoryChunk* AllocateCodeChunk(MemoryAllocator* allocator) { | 43 static MemoryChunk* AllocateCodeChunk(MemoryAllocator* allocator) { |
44 return allocator->AllocateChunk(Deoptimizer::GetMaxDeoptTableSize(), | 44 return allocator->AllocateChunk(Deoptimizer::GetMaxDeoptTableSize(), |
45 OS::CommitPageSize(), | 45 VirtualMemory::GetPageSize(), |
46 #if defined(__native_client__) | 46 VirtualMemory::EXECUTABLE, |
47 // The Native Client port of V8 uses an interpreter, | |
48 // so code pages don't need PROT_EXEC. | |
49 NOT_EXECUTABLE, | |
50 #else | |
51 EXECUTABLE, | |
52 #endif | |
53 NULL); | 47 NULL); |
54 } | 48 } |
55 | 49 |
56 | 50 |
57 DeoptimizerData::DeoptimizerData(MemoryAllocator* allocator) | 51 DeoptimizerData::DeoptimizerData(MemoryAllocator* allocator) |
58 : allocator_(allocator), | 52 : allocator_(allocator), |
59 #ifdef ENABLE_DEBUGGER_SUPPORT | 53 #ifdef ENABLE_DEBUGGER_SUPPORT |
60 deoptimized_frame_info_(NULL), | 54 deoptimized_frame_info_(NULL), |
61 #endif | 55 #endif |
62 current_(NULL) { | 56 current_(NULL) { |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
121 } | 115 } |
122 | 116 |
123 | 117 |
124 // No larger than 2K on all platforms | 118 // No larger than 2K on all platforms |
125 static const int kDeoptTableMaxEpilogueCodeSize = 2 * KB; | 119 static const int kDeoptTableMaxEpilogueCodeSize = 2 * KB; |
126 | 120 |
127 | 121 |
128 size_t Deoptimizer::GetMaxDeoptTableSize() { | 122 size_t Deoptimizer::GetMaxDeoptTableSize() { |
129 int entries_size = | 123 int entries_size = |
130 Deoptimizer::kMaxNumberOfEntries * Deoptimizer::table_entry_size_; | 124 Deoptimizer::kMaxNumberOfEntries * Deoptimizer::table_entry_size_; |
131 int commit_page_size = static_cast<int>(OS::CommitPageSize()); | 125 int commit_page_size = static_cast<int>(VirtualMemory::GetPageSize()); |
132 int page_count = ((kDeoptTableMaxEpilogueCodeSize + entries_size - 1) / | 126 int page_count = ((kDeoptTableMaxEpilogueCodeSize + entries_size - 1) / |
133 commit_page_size) + 1; | 127 commit_page_size) + 1; |
134 return static_cast<size_t>(commit_page_size * page_count); | 128 return static_cast<size_t>(commit_page_size * page_count); |
135 } | 129 } |
136 | 130 |
137 | 131 |
138 Deoptimizer* Deoptimizer::Grab(Isolate* isolate) { | 132 Deoptimizer* Deoptimizer::Grab(Isolate* isolate) { |
139 Deoptimizer* result = isolate->deoptimizer_data()->current_; | 133 Deoptimizer* result = isolate->deoptimizer_data()->current_; |
140 ASSERT(result != NULL); | 134 ASSERT(result != NULL); |
141 result->DeleteFrameDescriptions(); | 135 result->DeleteFrameDescriptions(); |
(...skipping 2909 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3051 | 3045 |
3052 void DeoptimizedFrameInfo::Iterate(ObjectVisitor* v) { | 3046 void DeoptimizedFrameInfo::Iterate(ObjectVisitor* v) { |
3053 v->VisitPointer(BitCast<Object**>(&function_)); | 3047 v->VisitPointer(BitCast<Object**>(&function_)); |
3054 v->VisitPointers(parameters_, parameters_ + parameters_count_); | 3048 v->VisitPointers(parameters_, parameters_ + parameters_count_); |
3055 v->VisitPointers(expression_stack_, expression_stack_ + expression_count_); | 3049 v->VisitPointers(expression_stack_, expression_stack_ + expression_count_); |
3056 } | 3050 } |
3057 | 3051 |
3058 #endif // ENABLE_DEBUGGER_SUPPORT | 3052 #endif // ENABLE_DEBUGGER_SUPPORT |
3059 | 3053 |
3060 } } // namespace v8::internal | 3054 } } // namespace v8::internal |
OLD | NEW |