Commit b31d3753 authored by yangguo@chromium.org's avatar yangguo@chromium.org

Do not reverse lookup code stubs dictionary.

R=jkummerow@chromium.org

Review URL: https://codereview.chromium.org/407383004

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22548 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent fc5b5f2d
......@@ -1489,17 +1489,7 @@ void Debug::PrepareStep(StepAction step_action,
bool is_call_ic = call_function_stub->kind() == Code::CALL_IC;
// Find out number of arguments from the stub minor key.
// Reverse lookup required as the minor key cannot be retrieved
// from the code object.
Handle<Object> obj(
isolate_->heap()->code_stubs()->SlowReverseLookup(
*call_function_stub),
isolate_);
ASSERT(!obj.is_null());
ASSERT(!(*obj)->IsUndefined());
ASSERT(obj->IsSmi());
// Get the STUB key and extract major and minor key.
uint32_t key = Smi::cast(*obj)->value();
uint32_t key = call_function_stub->stub_key();
// Argc in the stub is the number of arguments passed - not the
// expected arguments of the called function.
int call_function_arg_count = is_call_ic
......
......@@ -95,7 +95,6 @@ static int DecodeIt(Isolate* isolate,
SealHandleScope shs(isolate);
DisallowHeapAllocation no_alloc;
ExternalReferenceEncoder ref_encoder(isolate);
Heap* heap = isolate->heap();
v8::internal::EmbeddedVector<char, 128> decode_buffer;
v8::internal::EmbeddedVector<char, kOutBufferSize> out_buffer;
......@@ -226,29 +225,21 @@ static int DecodeIt(Isolate* isolate,
out.AddFormatted(", %s", Code::StubType2String(type));
}
} else if (kind == Code::STUB || kind == Code::HANDLER) {
// Reverse lookup required as the minor key cannot be retrieved
// from the code object.
Object* obj = heap->code_stubs()->SlowReverseLookup(code);
if (obj != heap->undefined_value()) {
ASSERT(obj->IsSmi());
// Get the STUB key and extract major and minor key.
uint32_t key = Smi::cast(obj)->value();
uint32_t minor_key = CodeStub::MinorKeyFromKey(key);
CodeStub::Major major_key = CodeStub::GetMajorKey(code);
ASSERT(major_key == CodeStub::MajorKeyFromKey(key));
out.AddFormatted(" %s, %s, ",
Code::Kind2String(kind),
CodeStub::MajorName(major_key, false));
switch (major_key) {
case CodeStub::CallFunction: {
int argc =
CallFunctionStub::ExtractArgcFromMinorKey(minor_key);
out.AddFormatted("argc = %d", argc);
break;
}
default:
out.AddFormatted("minor: %d", minor_key);
// Get the STUB key and extract major and minor key.
uint32_t key = code->stub_key();
uint32_t minor_key = CodeStub::MinorKeyFromKey(key);
CodeStub::Major major_key = CodeStub::GetMajorKey(code);
ASSERT(major_key == CodeStub::MajorKeyFromKey(key));
out.AddFormatted(" %s, %s, ", Code::Kind2String(kind),
CodeStub::MajorName(major_key, false));
switch (major_key) {
case CodeStub::CallFunction: {
int argc = CallFunctionStub::ExtractArgcFromMinorKey(minor_key);
out.AddFormatted("argc = %d", argc);
break;
}
default:
out.AddFormatted("minor: %d", minor_key);
}
} else {
out.AddFormatted(" %s", Code::Kind2String(kind));
......
......@@ -14597,10 +14597,6 @@ template Object*
Dictionary<SeededNumberDictionary, SeededNumberDictionaryShape, uint32_t>::
SlowReverseLookup(Object* value);
template Object*
Dictionary<UnseededNumberDictionary, UnseededNumberDictionaryShape, uint32_t>::
SlowReverseLookup(Object* value);
template Object*
Dictionary<NameDictionary, NameDictionaryShape, Handle<Name> >::
SlowReverseLookup(Object* value);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment