| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index 906f7feef6bb30f5bf9f3787e568f1b7f9405a30..385d3f2b53951cbbf0438a3e084ce2e0046b7c30 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -8427,6 +8427,7 @@ void Code::ClearInlineCaches() {
|
|
|
|
|
| void Code::ClearTypeFeedbackCells(Heap* heap) {
|
| + if (kind() != FUNCTION) return;
|
| Object* raw_info = type_feedback_info();
|
| if (raw_info->IsTypeFeedbackInfo()) {
|
| TypeFeedbackCells* type_feedback_cells =
|
| @@ -8441,7 +8442,8 @@ void Code::ClearTypeFeedbackCells(Heap* heap) {
|
|
|
| bool Code::allowed_in_shared_map_code_cache() {
|
| return is_keyed_load_stub() || is_keyed_store_stub() ||
|
| - (is_compare_ic_stub() && compare_state() == CompareIC::KNOWN_OBJECTS);
|
| + (is_compare_ic_stub() &&
|
| + ICCompareStub::CompareState(stub_info()) == CompareIC::KNOWN_OBJECTS);
|
| }
|
|
|
|
|
| @@ -8703,11 +8705,15 @@ void Code::Disassemble(const char* name, FILE* out) {
|
| PrintF(out, "argc = %d\n", arguments_count());
|
| }
|
| if (is_compare_ic_stub()) {
|
| - CompareIC::State state = CompareIC::ComputeState(this);
|
| - PrintF(out, "compare_state = %s\n", CompareIC::GetStateName(state));
|
| - }
|
| - if (is_compare_ic_stub() && major_key() == CodeStub::CompareIC) {
|
| - Token::Value op = CompareIC::ComputeOperation(this);
|
| + ASSERT(major_key() == CodeStub::CompareIC);
|
| + CompareIC::State left_state, right_state, handler_state;
|
| + Token::Value op;
|
| + ICCompareStub::DecodeMinorKey(stub_info(), &left_state, &right_state,
|
| + &handler_state, &op);
|
| + PrintF(out, "compare_state = %s*%s -> %s\n",
|
| + CompareIC::GetStateName(left_state),
|
| + CompareIC::GetStateName(right_state),
|
| + CompareIC::GetStateName(handler_state));
|
| PrintF(out, "compare_operation = %s\n", Token::Name(op));
|
| }
|
| }
|
| @@ -8753,8 +8759,6 @@ void Code::Disassemble(const char* name, FILE* out) {
|
| PrintF(out, "\n");
|
| }
|
| PrintF(out, "\n");
|
| - // Just print if type feedback info is ever used for optimized code.
|
| - ASSERT(type_feedback_info()->IsUndefined());
|
| } else if (kind() == FUNCTION) {
|
| unsigned offset = stack_check_table_offset();
|
| // If there is no stack check table, the "table start" will at or after
|
|
|