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

Side by Side Diff: src/deoptimizer.cc

Issue 2365343002: [deoptimizer] Remove some dead code. (Closed)
Patch Set: Created 4 years, 2 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
« no previous file with comments | « src/deoptimizer.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "src/deoptimizer.h" 5 #include "src/deoptimizer.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "src/accessors.h" 9 #include "src/accessors.h"
10 #include "src/ast/prettyprinter.h" 10 #include "src/ast/prettyprinter.h"
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 96
97 97
98 Deoptimizer* Deoptimizer::Grab(Isolate* isolate) { 98 Deoptimizer* Deoptimizer::Grab(Isolate* isolate) {
99 Deoptimizer* result = isolate->deoptimizer_data()->current_; 99 Deoptimizer* result = isolate->deoptimizer_data()->current_;
100 CHECK_NOT_NULL(result); 100 CHECK_NOT_NULL(result);
101 result->DeleteFrameDescriptions(); 101 result->DeleteFrameDescriptions();
102 isolate->deoptimizer_data()->current_ = NULL; 102 isolate->deoptimizer_data()->current_ = NULL;
103 return result; 103 return result;
104 } 104 }
105 105
106
107 int Deoptimizer::ConvertJSFrameIndexToFrameIndex(int jsframe_index) {
108 if (jsframe_index == 0) return 0;
109
110 int frame_index = 0;
111 while (jsframe_index >= 0) {
112 FrameDescription* frame = output_[frame_index];
113 if (frame->GetFrameType() == StackFrame::JAVA_SCRIPT) {
114 jsframe_index--;
115 }
116 frame_index++;
117 }
118
119 return frame_index - 1;
120 }
121
122
123 DeoptimizedFrameInfo* Deoptimizer::DebuggerInspectableFrame( 106 DeoptimizedFrameInfo* Deoptimizer::DebuggerInspectableFrame(
124 JavaScriptFrame* frame, 107 JavaScriptFrame* frame,
125 int jsframe_index, 108 int jsframe_index,
126 Isolate* isolate) { 109 Isolate* isolate) {
127 CHECK(frame->is_optimized()); 110 CHECK(frame->is_optimized());
128 111
129 TranslatedState translated_values(frame); 112 TranslatedState translated_values(frame);
130 translated_values.Prepare(false, frame->fp()); 113 translated_values.Prepare(false, frame->fp());
131 114
132 TranslatedState::iterator frame_it = translated_values.end(); 115 TranslatedState::iterator frame_it = translated_values.end();
(...skipping 2106 matching lines...) Expand 10 before | Expand all | Expand 10 after
2239 2222
2240 // static 2223 // static
2241 unsigned Deoptimizer::ComputeOutgoingArgumentSize(Code* code, 2224 unsigned Deoptimizer::ComputeOutgoingArgumentSize(Code* code,
2242 unsigned bailout_id) { 2225 unsigned bailout_id) {
2243 DeoptimizationInputData* data = 2226 DeoptimizationInputData* data =
2244 DeoptimizationInputData::cast(code->deoptimization_data()); 2227 DeoptimizationInputData::cast(code->deoptimization_data());
2245 unsigned height = data->ArgumentsStackHeight(bailout_id)->value(); 2228 unsigned height = data->ArgumentsStackHeight(bailout_id)->value();
2246 return height * kPointerSize; 2229 return height * kPointerSize;
2247 } 2230 }
2248 2231
2249
2250 Object* Deoptimizer::ComputeLiteral(int index) const {
2251 DeoptimizationInputData* data =
2252 DeoptimizationInputData::cast(compiled_code_->deoptimization_data());
2253 FixedArray* literals = data->LiteralArray();
2254 return literals->get(index);
2255 }
2256
2257
2258 void Deoptimizer::EnsureCodeForDeoptimizationEntry(Isolate* isolate, 2232 void Deoptimizer::EnsureCodeForDeoptimizationEntry(Isolate* isolate,
2259 BailoutType type, 2233 BailoutType type,
2260 int max_entry_id) { 2234 int max_entry_id) {
2261 // We cannot run this if the serializer is enabled because this will 2235 // We cannot run this if the serializer is enabled because this will
2262 // cause us to emit relocation information for the external 2236 // cause us to emit relocation information for the external
2263 // references. This is fine because the deoptimizer's code section 2237 // references. This is fine because the deoptimizer's code section
2264 // isn't meant to be serialized at all. 2238 // isn't meant to be serialized at all.
2265 CHECK(type == EAGER || type == SOFT || type == LAZY); 2239 CHECK(type == EAGER || type == SOFT || type == LAZY);
2266 DeoptimizerData* data = isolate->deoptimizer_data(); 2240 DeoptimizerData* data = isolate->deoptimizer_data();
2267 int entry_count = data->deopt_entry_code_entries_[type]; 2241 int entry_count = data->deopt_entry_code_entries_[type];
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
2306 // tagged value. kZapUint32 looks like a valid tagged pointer, but it isn't. 2280 // tagged value. kZapUint32 looks like a valid tagged pointer, but it isn't.
2307 SetRegister(r, kZapUint32); 2281 SetRegister(r, kZapUint32);
2308 } 2282 }
2309 2283
2310 // Zap all the slots. 2284 // Zap all the slots.
2311 for (unsigned o = 0; o < frame_size; o += kPointerSize) { 2285 for (unsigned o = 0; o < frame_size; o += kPointerSize) {
2312 SetFrameSlot(o, kZapUint32); 2286 SetFrameSlot(o, kZapUint32);
2313 } 2287 }
2314 } 2288 }
2315 2289
2316
2317 int FrameDescription::ComputeFixedSize() {
2318 if (type_ == StackFrame::INTERPRETED) {
2319 return InterpreterFrameConstants::kFixedFrameSize +
2320 parameter_count() * kPointerSize;
2321 } else {
2322 return StandardFrameConstants::kFixedFrameSize +
2323 parameter_count() * kPointerSize;
2324 }
2325 }
2326
2327
2328 unsigned FrameDescription::GetOffsetFromSlotIndex(int slot_index) {
2329 if (slot_index >= 0) {
2330 // Local or spill slots. Skip the fixed part of the frame
2331 // including all arguments.
2332 unsigned base = GetFrameSize() - ComputeFixedSize();
2333 return base - ((slot_index + 1) * kPointerSize);
2334 } else {
2335 // Incoming parameter.
2336 int arg_size = parameter_count() * kPointerSize;
2337 unsigned base = GetFrameSize() - arg_size;
2338 return base - ((slot_index + 1) * kPointerSize);
2339 }
2340 }
2341
2342
2343 void TranslationBuffer::Add(int32_t value, Zone* zone) { 2290 void TranslationBuffer::Add(int32_t value, Zone* zone) {
2344 // This wouldn't handle kMinInt correctly if it ever encountered it. 2291 // This wouldn't handle kMinInt correctly if it ever encountered it.
2345 DCHECK(value != kMinInt); 2292 DCHECK(value != kMinInt);
2346 // Encode the sign bit in the least significant bit. 2293 // Encode the sign bit in the least significant bit.
2347 bool is_negative = (value < 0); 2294 bool is_negative = (value < 0);
2348 uint32_t bits = ((is_negative ? -value : value) << 1) | 2295 uint32_t bits = ((is_negative ? -value : value) << 1) |
2349 static_cast<int32_t>(is_negative); 2296 static_cast<int32_t>(is_negative);
2350 // Encode the individual bytes using the least significant bit of 2297 // Encode the individual bytes using the least significant bit of
2351 // each byte to indicate whether or not more bytes follow. 2298 // each byte to indicate whether or not more bytes follow.
2352 do { 2299 do {
(...skipping 1718 matching lines...) Expand 10 before | Expand all | Expand 10 after
4071 CHECK(value_info->IsMaterializedObject()); 4018 CHECK(value_info->IsMaterializedObject());
4072 4019
4073 value_info->value_ = 4020 value_info->value_ =
4074 Handle<Object>(previously_materialized_objects->get(i), isolate_); 4021 Handle<Object>(previously_materialized_objects->get(i), isolate_);
4075 } 4022 }
4076 } 4023 }
4077 } 4024 }
4078 4025
4079 } // namespace internal 4026 } // namespace internal
4080 } // namespace v8 4027 } // namespace v8
OLDNEW
« no previous file with comments | « src/deoptimizer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698