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

Side by Side Diff: src/arm/deoptimizer-arm.cc

Issue 14612012: Cleaned up deopt output a bit. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Added grep marker. Created 7 years, 7 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/deoptimizer.h » ('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 // 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 258 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 269
270 unsigned stack_slot_size = compiled_code_->stack_slots() * kPointerSize; 270 unsigned stack_slot_size = compiled_code_->stack_slots() * kPointerSize;
271 unsigned outgoing_height = data->ArgumentsStackHeight(bailout_id)->value(); 271 unsigned outgoing_height = data->ArgumentsStackHeight(bailout_id)->value();
272 unsigned outgoing_size = outgoing_height * kPointerSize; 272 unsigned outgoing_size = outgoing_height * kPointerSize;
273 unsigned output_frame_size = fixed_size + stack_slot_size + outgoing_size; 273 unsigned output_frame_size = fixed_size + stack_slot_size + outgoing_size;
274 ASSERT(outgoing_size == 0); // OSR does not happen in the middle of a call. 274 ASSERT(outgoing_size == 0); // OSR does not happen in the middle of a call.
275 275
276 if (FLAG_trace_osr) { 276 if (FLAG_trace_osr) {
277 PrintF("[on-stack replacement: begin 0x%08" V8PRIxPTR " ", 277 PrintF("[on-stack replacement: begin 0x%08" V8PRIxPTR " ",
278 reinterpret_cast<intptr_t>(function_)); 278 reinterpret_cast<intptr_t>(function_));
279 function_->PrintName(); 279 PrintFunctionName();
280 PrintF(" => node=%u, frame=%d->%d]\n", 280 PrintF(" => node=%u, frame=%d->%d]\n",
281 ast_id, 281 ast_id,
282 input_frame_size, 282 input_frame_size,
283 output_frame_size); 283 output_frame_size);
284 } 284 }
285 285
286 // There's only one output frame in the OSR case. 286 // There's only one output frame in the OSR case.
287 output_count_ = 1; 287 output_count_ = 1;
288 output_ = new FrameDescription*[1]; 288 output_ = new FrameDescription*[1];
289 output_[0] = new(output_frame_size) FrameDescription( 289 output_[0] = new(output_frame_size) FrameDescription(
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 output_[0]->SetPc(pc); 363 output_[0]->SetPc(pc);
364 } 364 }
365 Code* continuation = isolate_->builtins()->builtin(Builtins::kNotifyOSR); 365 Code* continuation = isolate_->builtins()->builtin(Builtins::kNotifyOSR);
366 output_[0]->SetContinuation( 366 output_[0]->SetContinuation(
367 reinterpret_cast<uint32_t>(continuation->entry())); 367 reinterpret_cast<uint32_t>(continuation->entry()));
368 368
369 if (FLAG_trace_osr) { 369 if (FLAG_trace_osr) {
370 PrintF("[on-stack replacement translation %s: 0x%08" V8PRIxPTR " ", 370 PrintF("[on-stack replacement translation %s: 0x%08" V8PRIxPTR " ",
371 ok ? "finished" : "aborted", 371 ok ? "finished" : "aborted",
372 reinterpret_cast<intptr_t>(function_)); 372 reinterpret_cast<intptr_t>(function_));
373 function_->PrintName(); 373 PrintFunctionName();
374 PrintF(" => pc=0x%0x]\n", output_[0]->GetPc()); 374 PrintF(" => pc=0x%0x]\n", output_[0]->GetPc());
375 } 375 }
376 } 376 }
377 377
378 378
379 // This code is very similar to ia32 code, but relies on register names (fp, sp) 379 // This code is very similar to ia32 code, but relies on register names (fp, sp)
380 // and how the frame is laid out. 380 // and how the frame is laid out.
381 void Deoptimizer::DoComputeJSFrame(TranslationIterator* iterator, 381 void Deoptimizer::DoComputeJSFrame(TranslationIterator* iterator,
382 int frame_index) { 382 int frame_index) {
383 // Read the ast node id, function, and frame height for this output frame. 383 // Read the ast node id, function, and frame height for this output frame.
(...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 __ push(ip); 828 __ push(ip);
829 __ b(&done); 829 __ b(&done);
830 ASSERT(masm()->pc_offset() - start == table_entry_size_); 830 ASSERT(masm()->pc_offset() - start == table_entry_size_);
831 } 831 }
832 __ bind(&done); 832 __ bind(&done);
833 } 833 }
834 834
835 #undef __ 835 #undef __
836 836
837 } } // namespace v8::internal 837 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | src/deoptimizer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698