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

Unified Diff: src/deoptimizer.cc

Issue 23537067: Add support for keyed-call on arrays of fast elements (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Compare with actual map loaded from the context Created 7 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: src/deoptimizer.cc
diff --git a/src/deoptimizer.cc b/src/deoptimizer.cc
index 9a1bb9d8efb97e2193051079321f3b59d9219444..0bd5035a50fb03e7b2e308be449e6acea2dd3d0b 100644
--- a/src/deoptimizer.cc
+++ b/src/deoptimizer.cc
@@ -1424,9 +1424,17 @@ void Deoptimizer::DoComputeCompiledStubFrame(TranslationIterator* iterator,
int input_frame_size = input_->GetFrameSize();
int output_frame_size = height_in_bytes + fixed_frame_size;
if (trace_) {
- PrintF(" translating %s => StubFailureTrampolineStub, height=%d\n",
- CodeStub::MajorName(static_cast<CodeStub::Major>(major_key), false),
- height_in_bytes);
+ if (descriptor->call_stub_) {
+ PrintF(" translating %s => CallStubFailureTrampolineStub, height=%d\n",
danno 2013/10/02 08:49:11 You can use a single statement and just switch the
Toon Verwaest 2013/10/02 16:28:16 Done.
+ CodeStub::MajorName(
+ static_cast<CodeStub::Major>(major_key), false),
+ height_in_bytes);
+ } else {
+ PrintF(" translating %s => StubFailureTrampolineStub, height=%d\n",
+ CodeStub::MajorName(
+ static_cast<CodeStub::Major>(major_key), false),
+ height_in_bytes);
+ }
}
// The stub failure trampoline is a single frame.
@@ -1493,7 +1501,8 @@ void Deoptimizer::DoComputeCompiledStubFrame(TranslationIterator* iterator,
top_address + output_frame_offset, output_frame_offset, value);
}
- intptr_t caller_arg_count = 0;
+ intptr_t caller_arg_count = descriptor->call_stub_
+ ? compiled_code_->arguments_count() : 0;
bool arg_count_known = descriptor->stack_parameter_count_ == NULL;
// Build the Arguments object for the caller's parameters and a pointer to it.
@@ -1567,9 +1576,13 @@ void Deoptimizer::DoComputeCompiledStubFrame(TranslationIterator* iterator,
// Compute this frame's PC, state, and continuation.
Code* trampoline = NULL;
- StubFunctionMode function_mode = descriptor->function_mode_;
- StubFailureTrampolineStub(function_mode).FindCodeInCache(&trampoline,
- isolate_);
+ if (descriptor->call_stub_) {
+ CallStubFailureTrampolineStub().FindCodeInCache(&trampoline, isolate_);
danno 2013/10/02 08:49:11 Is this only going to every be used with CallStubs
Toon Verwaest 2013/10/02 16:28:16 Done.
+ } else {
+ StubFunctionMode function_mode = descriptor->function_mode_;
+ StubFailureTrampolineStub(function_mode).FindCodeInCache(&trampoline,
+ isolate_);
+ }
ASSERT(trampoline != NULL);
output_frame->SetPc(reinterpret_cast<intptr_t>(
trampoline->instruction_start()));

Powered by Google App Engine
This is Rietveld 408576698