OLD | NEW |
1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 6220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6231 case INTERCEPTOR: return "INTERCEPTOR"; | 6231 case INTERCEPTOR: return "INTERCEPTOR"; |
6232 case MAP_TRANSITION: return "MAP_TRANSITION"; | 6232 case MAP_TRANSITION: return "MAP_TRANSITION"; |
6233 case CONSTANT_TRANSITION: return "CONSTANT_TRANSITION"; | 6233 case CONSTANT_TRANSITION: return "CONSTANT_TRANSITION"; |
6234 case NULL_DESCRIPTOR: return "NULL_DESCRIPTOR"; | 6234 case NULL_DESCRIPTOR: return "NULL_DESCRIPTOR"; |
6235 } | 6235 } |
6236 UNREACHABLE(); | 6236 UNREACHABLE(); |
6237 return NULL; | 6237 return NULL; |
6238 } | 6238 } |
6239 | 6239 |
6240 | 6240 |
| 6241 void Code::PrintExtraICState(FILE* out, Kind kind, ExtraICState extra) { |
| 6242 const char* name = NULL; |
| 6243 switch (kind) { |
| 6244 case CALL_IC: |
| 6245 if (extra == STRING_INDEX_OUT_OF_BOUNDS) { |
| 6246 name = "STRING_INDEX_OUT_OF_BOUNDS"; |
| 6247 } |
| 6248 break; |
| 6249 case STORE_IC: |
| 6250 if (extra == StoreIC::kStoreICStrict) { |
| 6251 name = "STRICT"; |
| 6252 } |
| 6253 break; |
| 6254 default: |
| 6255 break; |
| 6256 } |
| 6257 if (name != NULL) { |
| 6258 PrintF(out, "extra_ic_state = %s\n", name); |
| 6259 } else { |
| 6260 PrintF(out, "etra_ic_state = %d\n", extra); |
| 6261 } |
| 6262 } |
| 6263 |
| 6264 |
6241 void Code::Disassemble(const char* name, FILE* out) { | 6265 void Code::Disassemble(const char* name, FILE* out) { |
6242 PrintF(out, "kind = %s\n", Kind2String(kind())); | 6266 PrintF(out, "kind = %s\n", Kind2String(kind())); |
6243 if (is_inline_cache_stub()) { | 6267 if (is_inline_cache_stub()) { |
6244 PrintF(out, "ic_state = %s\n", ICState2String(ic_state())); | 6268 PrintF(out, "ic_state = %s\n", ICState2String(ic_state())); |
| 6269 PrintExtraICState(out, kind(), extra_ic_state()); |
6245 PrintF(out, "ic_in_loop = %d\n", ic_in_loop() == IN_LOOP); | 6270 PrintF(out, "ic_in_loop = %d\n", ic_in_loop() == IN_LOOP); |
6246 if (ic_state() == MONOMORPHIC) { | 6271 if (ic_state() == MONOMORPHIC) { |
6247 PrintF(out, "type = %s\n", PropertyType2String(type())); | 6272 PrintF(out, "type = %s\n", PropertyType2String(type())); |
6248 } | 6273 } |
6249 } | 6274 } |
6250 if ((name != NULL) && (name[0] != '\0')) { | 6275 if ((name != NULL) && (name[0] != '\0')) { |
6251 PrintF(out, "name = %s\n", name); | 6276 PrintF(out, "name = %s\n", name); |
6252 } | 6277 } |
6253 if (kind() == OPTIMIZED_FUNCTION) { | 6278 if (kind() == OPTIMIZED_FUNCTION) { |
6254 PrintF(out, "stack_slots = %d\n", stack_slots()); | 6279 PrintF(out, "stack_slots = %d\n", stack_slots()); |
(...skipping 3673 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9928 if (break_point_objects()->IsUndefined()) return 0; | 9953 if (break_point_objects()->IsUndefined()) return 0; |
9929 // Single beak point. | 9954 // Single beak point. |
9930 if (!break_point_objects()->IsFixedArray()) return 1; | 9955 if (!break_point_objects()->IsFixedArray()) return 1; |
9931 // Multiple break points. | 9956 // Multiple break points. |
9932 return FixedArray::cast(break_point_objects())->length(); | 9957 return FixedArray::cast(break_point_objects())->length(); |
9933 } | 9958 } |
9934 #endif | 9959 #endif |
9935 | 9960 |
9936 | 9961 |
9937 } } // namespace v8::internal | 9962 } } // namespace v8::internal |
OLD | NEW |