OLD | NEW |
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 2334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2345 PropertyType DescriptorArray::GetType(int descriptor_number) { | 2345 PropertyType DescriptorArray::GetType(int descriptor_number) { |
2346 return GetDetails(descriptor_number).type(); | 2346 return GetDetails(descriptor_number).type(); |
2347 } | 2347 } |
2348 | 2348 |
2349 | 2349 |
2350 int DescriptorArray::GetFieldIndex(int descriptor_number) { | 2350 int DescriptorArray::GetFieldIndex(int descriptor_number) { |
2351 return GetDetails(descriptor_number).field_index(); | 2351 return GetDetails(descriptor_number).field_index(); |
2352 } | 2352 } |
2353 | 2353 |
2354 | 2354 |
2355 JSFunction* DescriptorArray::GetConstantFunction(int descriptor_number) { | 2355 Object* DescriptorArray::GetConstant(int descriptor_number) { |
2356 return JSFunction::cast(GetValue(descriptor_number)); | 2356 return GetValue(descriptor_number); |
2357 } | 2357 } |
2358 | 2358 |
2359 | 2359 |
2360 Object* DescriptorArray::GetCallbacksObject(int descriptor_number) { | 2360 Object* DescriptorArray::GetCallbacksObject(int descriptor_number) { |
2361 ASSERT(GetType(descriptor_number) == CALLBACKS); | 2361 ASSERT(GetType(descriptor_number) == CALLBACKS); |
2362 return GetValue(descriptor_number); | 2362 return GetValue(descriptor_number); |
2363 } | 2363 } |
2364 | 2364 |
2365 | 2365 |
2366 AccessorDescriptor* DescriptorArray::GetCallbacks(int descriptor_number) { | 2366 AccessorDescriptor* DescriptorArray::GetCallbacks(int descriptor_number) { |
(...skipping 1274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3641 if (FLAG_track_fields && details.representation().IsSmi()) { | 3641 if (FLAG_track_fields && details.representation().IsSmi()) { |
3642 return true; | 3642 return true; |
3643 } | 3643 } |
3644 if (FLAG_track_double_fields && details.representation().IsDouble()) { | 3644 if (FLAG_track_double_fields && details.representation().IsDouble()) { |
3645 return true; | 3645 return true; |
3646 } | 3646 } |
3647 if (FLAG_track_heap_object_fields && | 3647 if (FLAG_track_heap_object_fields && |
3648 details.representation().IsHeapObject()) { | 3648 details.representation().IsHeapObject()) { |
3649 return true; | 3649 return true; |
3650 } | 3650 } |
3651 if (FLAG_track_fields && details.type() == CONSTANT_FUNCTION) { | 3651 if (FLAG_track_fields && details.type() == CONSTANT) { |
3652 return true; | 3652 return true; |
3653 } | 3653 } |
3654 } | 3654 } |
3655 return false; | 3655 return false; |
3656 } | 3656 } |
3657 | 3657 |
3658 | 3658 |
3659 void Map::NotifyLeafMapLayoutChange() { | 3659 void Map::NotifyLeafMapLayoutChange() { |
3660 dependent_code()->DeoptimizeDependentCodeGroup( | 3660 dependent_code()->DeoptimizeDependentCodeGroup( |
3661 GetIsolate(), | 3661 GetIsolate(), |
3662 DependentCode::kPrototypeCheckGroup); | 3662 DependentCode::kPrototypeCheckGroup); |
3663 } | 3663 } |
3664 | 3664 |
3665 | 3665 |
3666 bool Map::CanOmitPrototypeChecks() { | 3666 bool Map::CanOmitPrototypeChecks() { |
3667 return !HasTransitionArray() && !is_dictionary_map() && | 3667 return !HasTransitionArray() && !is_dictionary_map() && |
3668 FLAG_omit_prototype_checks_for_leaf_maps; | 3668 FLAG_omit_prototype_checks_for_leaf_maps; |
3669 } | 3669 } |
3670 | 3670 |
3671 | 3671 |
| 3672 bool Map::CanOmitMapChecks() { |
| 3673 return !HasTransitionArray() && !is_dictionary_map() && |
| 3674 FLAG_omit_map_checks_for_leaf_maps; |
| 3675 } |
| 3676 |
| 3677 |
3672 int DependentCode::number_of_entries(DependencyGroup group) { | 3678 int DependentCode::number_of_entries(DependencyGroup group) { |
3673 if (length() == 0) return 0; | 3679 if (length() == 0) return 0; |
3674 return Smi::cast(get(group))->value(); | 3680 return Smi::cast(get(group))->value(); |
3675 } | 3681 } |
3676 | 3682 |
3677 | 3683 |
3678 void DependentCode::set_number_of_entries(DependencyGroup group, int value) { | 3684 void DependentCode::set_number_of_entries(DependencyGroup group, int value) { |
3679 set(group, Smi::FromInt(value)); | 3685 set(group, Smi::FromInt(value)); |
3680 } | 3686 } |
3681 | 3687 |
(...skipping 1544 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5226 kind() == BINARY_OP_IC || | 5232 kind() == BINARY_OP_IC || |
5227 kind() == STUB || | 5233 kind() == STUB || |
5228 kind() == LOAD_IC || | 5234 kind() == LOAD_IC || |
5229 kind() == KEYED_LOAD_IC || | 5235 kind() == KEYED_LOAD_IC || |
5230 kind() == STORE_IC || | 5236 kind() == STORE_IC || |
5231 kind() == KEYED_STORE_IC); | 5237 kind() == KEYED_STORE_IC); |
5232 WRITE_FIELD(this, kTypeFeedbackInfoOffset, Smi::FromInt(value)); | 5238 WRITE_FIELD(this, kTypeFeedbackInfoOffset, Smi::FromInt(value)); |
5233 } | 5239 } |
5234 | 5240 |
5235 | 5241 |
5236 void Code::set_deoptimizing_functions(Object* value) { | 5242 Object* Code::code_to_deoptimize_link() { |
| 5243 // Optimized code should not have type feedback. |
| 5244 ASSERT(kind() == OPTIMIZED_FUNCTION); |
| 5245 return READ_FIELD(this, kTypeFeedbackInfoOffset); |
| 5246 } |
| 5247 |
| 5248 |
| 5249 void Code::set_code_to_deoptimize_link(Object* value) { |
5237 ASSERT(kind() == OPTIMIZED_FUNCTION); | 5250 ASSERT(kind() == OPTIMIZED_FUNCTION); |
5238 WRITE_FIELD(this, kTypeFeedbackInfoOffset, value); | 5251 WRITE_FIELD(this, kTypeFeedbackInfoOffset, value); |
5239 } | 5252 } |
5240 | 5253 |
5241 | 5254 |
5242 Object* Code::deoptimizing_functions() { | 5255 Object** Code::code_to_deoptimize_link_slot() { |
5243 ASSERT(kind() == OPTIMIZED_FUNCTION); | 5256 ASSERT(kind() == OPTIMIZED_FUNCTION); |
5244 return Object::cast(READ_FIELD(this, kTypeFeedbackInfoOffset)); | 5257 return HeapObject::RawField(this, kTypeFeedbackInfoOffset); |
5245 } | 5258 } |
5246 | 5259 |
5247 | 5260 |
5248 ACCESSORS(Code, gc_metadata, Object, kGCMetadataOffset) | 5261 ACCESSORS(Code, gc_metadata, Object, kGCMetadataOffset) |
5249 INT_ACCESSORS(Code, ic_age, kICAgeOffset) | 5262 INT_ACCESSORS(Code, ic_age, kICAgeOffset) |
5250 | 5263 |
5251 | 5264 |
5252 byte* Code::instruction_start() { | 5265 byte* Code::instruction_start() { |
5253 return FIELD_ADDR(this, kHeaderSize); | 5266 return FIELD_ADDR(this, kHeaderSize); |
5254 } | 5267 } |
(...skipping 939 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6194 #undef WRITE_UINT32_FIELD | 6207 #undef WRITE_UINT32_FIELD |
6195 #undef READ_SHORT_FIELD | 6208 #undef READ_SHORT_FIELD |
6196 #undef WRITE_SHORT_FIELD | 6209 #undef WRITE_SHORT_FIELD |
6197 #undef READ_BYTE_FIELD | 6210 #undef READ_BYTE_FIELD |
6198 #undef WRITE_BYTE_FIELD | 6211 #undef WRITE_BYTE_FIELD |
6199 | 6212 |
6200 | 6213 |
6201 } } // namespace v8::internal | 6214 } } // namespace v8::internal |
6202 | 6215 |
6203 #endif // V8_OBJECTS_INL_H_ | 6216 #endif // V8_OBJECTS_INL_H_ |
OLD | NEW |