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 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
87 | 87 |
88 | 88 |
89 #define ACCESSORS(holder, name, type, offset) \ | 89 #define ACCESSORS(holder, name, type, offset) \ |
90 type* holder::name() { return type::cast(READ_FIELD(this, offset)); } \ | 90 type* holder::name() { return type::cast(READ_FIELD(this, offset)); } \ |
91 void holder::set_##name(type* value, WriteBarrierMode mode) { \ | 91 void holder::set_##name(type* value, WriteBarrierMode mode) { \ |
92 WRITE_FIELD(this, offset, value); \ | 92 WRITE_FIELD(this, offset, value); \ |
93 CONDITIONAL_WRITE_BARRIER(GetHeap(), this, offset, value, mode); \ | 93 CONDITIONAL_WRITE_BARRIER(GetHeap(), this, offset, value, mode); \ |
94 } | 94 } |
95 | 95 |
96 | 96 |
97 // Getter that returns a raw Smi and setter that writes a raw Smi. | |
Michael Starzinger
2012/03/14 16:15:16
I would refer to them as "tagged Smi" instead of "
| |
98 #define ACCESSORS_TO_SMI(holder, name, offset) \ | |
99 Smi* holder::name() { return Smi::cast(READ_FIELD(this, offset)); } \ | |
100 void holder::set_##name(Smi* value, WriteBarrierMode mode) { \ | |
101 WRITE_FIELD(this, offset, value); \ | |
102 } | |
103 | |
104 | |
105 // Getter that returns a Smi as an int and writes an int as a Smi. | |
97 #define SMI_ACCESSORS(holder, name, offset) \ | 106 #define SMI_ACCESSORS(holder, name, offset) \ |
98 int holder::name() { \ | 107 int holder::name() { \ |
99 Object* value = READ_FIELD(this, offset); \ | 108 Object* value = READ_FIELD(this, offset); \ |
100 return Smi::cast(value)->value(); \ | 109 return Smi::cast(value)->value(); \ |
101 } \ | 110 } \ |
102 void holder::set_##name(int value) { \ | 111 void holder::set_##name(int value) { \ |
103 WRITE_FIELD(this, offset, Smi::FromInt(value)); \ | 112 WRITE_FIELD(this, offset, Smi::FromInt(value)); \ |
104 } | 113 } |
105 | 114 |
106 | 115 |
(...skipping 3340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3447 ACCESSORS(GlobalObject, builtins, JSBuiltinsObject, kBuiltinsOffset) | 3456 ACCESSORS(GlobalObject, builtins, JSBuiltinsObject, kBuiltinsOffset) |
3448 ACCESSORS(GlobalObject, global_context, Context, kGlobalContextOffset) | 3457 ACCESSORS(GlobalObject, global_context, Context, kGlobalContextOffset) |
3449 ACCESSORS(GlobalObject, global_receiver, JSObject, kGlobalReceiverOffset) | 3458 ACCESSORS(GlobalObject, global_receiver, JSObject, kGlobalReceiverOffset) |
3450 | 3459 |
3451 ACCESSORS(JSGlobalProxy, context, Object, kContextOffset) | 3460 ACCESSORS(JSGlobalProxy, context, Object, kContextOffset) |
3452 | 3461 |
3453 ACCESSORS(AccessorInfo, getter, Object, kGetterOffset) | 3462 ACCESSORS(AccessorInfo, getter, Object, kGetterOffset) |
3454 ACCESSORS(AccessorInfo, setter, Object, kSetterOffset) | 3463 ACCESSORS(AccessorInfo, setter, Object, kSetterOffset) |
3455 ACCESSORS(AccessorInfo, data, Object, kDataOffset) | 3464 ACCESSORS(AccessorInfo, data, Object, kDataOffset) |
3456 ACCESSORS(AccessorInfo, name, Object, kNameOffset) | 3465 ACCESSORS(AccessorInfo, name, Object, kNameOffset) |
3457 ACCESSORS(AccessorInfo, flag, Smi, kFlagOffset) | 3466 ACCESSORS_TO_SMI(AccessorInfo, flag, kFlagOffset) |
3458 | 3467 |
3459 ACCESSORS(AccessorPair, getter, Object, kGetterOffset) | 3468 ACCESSORS(AccessorPair, getter, Object, kGetterOffset) |
3460 ACCESSORS(AccessorPair, setter, Object, kSetterOffset) | 3469 ACCESSORS(AccessorPair, setter, Object, kSetterOffset) |
3461 | 3470 |
3462 ACCESSORS(AccessCheckInfo, named_callback, Object, kNamedCallbackOffset) | 3471 ACCESSORS(AccessCheckInfo, named_callback, Object, kNamedCallbackOffset) |
3463 ACCESSORS(AccessCheckInfo, indexed_callback, Object, kIndexedCallbackOffset) | 3472 ACCESSORS(AccessCheckInfo, indexed_callback, Object, kIndexedCallbackOffset) |
3464 ACCESSORS(AccessCheckInfo, data, Object, kDataOffset) | 3473 ACCESSORS(AccessCheckInfo, data, Object, kDataOffset) |
3465 | 3474 |
3466 ACCESSORS(InterceptorInfo, getter, Object, kGetterOffset) | 3475 ACCESSORS(InterceptorInfo, getter, Object, kGetterOffset) |
3467 ACCESSORS(InterceptorInfo, setter, Object, kSetterOffset) | 3476 ACCESSORS(InterceptorInfo, setter, Object, kSetterOffset) |
(...skipping 20 matching lines...) Expand all Loading... | |
3488 ACCESSORS(FunctionTemplateInfo, indexed_property_handler, Object, | 3497 ACCESSORS(FunctionTemplateInfo, indexed_property_handler, Object, |
3489 kIndexedPropertyHandlerOffset) | 3498 kIndexedPropertyHandlerOffset) |
3490 ACCESSORS(FunctionTemplateInfo, instance_template, Object, | 3499 ACCESSORS(FunctionTemplateInfo, instance_template, Object, |
3491 kInstanceTemplateOffset) | 3500 kInstanceTemplateOffset) |
3492 ACCESSORS(FunctionTemplateInfo, class_name, Object, kClassNameOffset) | 3501 ACCESSORS(FunctionTemplateInfo, class_name, Object, kClassNameOffset) |
3493 ACCESSORS(FunctionTemplateInfo, signature, Object, kSignatureOffset) | 3502 ACCESSORS(FunctionTemplateInfo, signature, Object, kSignatureOffset) |
3494 ACCESSORS(FunctionTemplateInfo, instance_call_handler, Object, | 3503 ACCESSORS(FunctionTemplateInfo, instance_call_handler, Object, |
3495 kInstanceCallHandlerOffset) | 3504 kInstanceCallHandlerOffset) |
3496 ACCESSORS(FunctionTemplateInfo, access_check_info, Object, | 3505 ACCESSORS(FunctionTemplateInfo, access_check_info, Object, |
3497 kAccessCheckInfoOffset) | 3506 kAccessCheckInfoOffset) |
3498 ACCESSORS(FunctionTemplateInfo, flag, Smi, kFlagOffset) | 3507 ACCESSORS_TO_SMI(FunctionTemplateInfo, flag, kFlagOffset) |
3499 | 3508 |
3500 ACCESSORS(ObjectTemplateInfo, constructor, Object, kConstructorOffset) | 3509 ACCESSORS(ObjectTemplateInfo, constructor, Object, kConstructorOffset) |
3501 ACCESSORS(ObjectTemplateInfo, internal_field_count, Object, | 3510 ACCESSORS(ObjectTemplateInfo, internal_field_count, Object, |
3502 kInternalFieldCountOffset) | 3511 kInternalFieldCountOffset) |
3503 | 3512 |
3504 ACCESSORS(SignatureInfo, receiver, Object, kReceiverOffset) | 3513 ACCESSORS(SignatureInfo, receiver, Object, kReceiverOffset) |
3505 ACCESSORS(SignatureInfo, args, Object, kArgsOffset) | 3514 ACCESSORS(SignatureInfo, args, Object, kArgsOffset) |
3506 | 3515 |
3507 ACCESSORS(TypeSwitchInfo, types, Object, kTypesOffset) | 3516 ACCESSORS(TypeSwitchInfo, types, Object, kTypesOffset) |
3508 | 3517 |
3509 ACCESSORS(Script, source, Object, kSourceOffset) | 3518 ACCESSORS(Script, source, Object, kSourceOffset) |
3510 ACCESSORS(Script, name, Object, kNameOffset) | 3519 ACCESSORS(Script, name, Object, kNameOffset) |
3511 ACCESSORS(Script, id, Object, kIdOffset) | 3520 ACCESSORS(Script, id, Object, kIdOffset) |
3512 ACCESSORS(Script, line_offset, Smi, kLineOffsetOffset) | 3521 ACCESSORS_TO_SMI(Script, line_offset, kLineOffsetOffset) |
3513 ACCESSORS(Script, column_offset, Smi, kColumnOffsetOffset) | 3522 ACCESSORS_TO_SMI(Script, column_offset, kColumnOffsetOffset) |
3514 ACCESSORS(Script, data, Object, kDataOffset) | 3523 ACCESSORS(Script, data, Object, kDataOffset) |
3515 ACCESSORS(Script, context_data, Object, kContextOffset) | 3524 ACCESSORS(Script, context_data, Object, kContextOffset) |
3516 ACCESSORS(Script, wrapper, Foreign, kWrapperOffset) | 3525 ACCESSORS(Script, wrapper, Foreign, kWrapperOffset) |
3517 ACCESSORS(Script, type, Smi, kTypeOffset) | 3526 ACCESSORS_TO_SMI(Script, type, kTypeOffset) |
3518 ACCESSORS(Script, compilation_type, Smi, kCompilationTypeOffset) | 3527 ACCESSORS_TO_SMI(Script, compilation_type, kCompilationTypeOffset) |
3519 ACCESSORS(Script, line_ends, Object, kLineEndsOffset) | 3528 ACCESSORS(Script, line_ends, Object, kLineEndsOffset) |
3520 ACCESSORS(Script, eval_from_shared, Object, kEvalFromSharedOffset) | 3529 ACCESSORS(Script, eval_from_shared, Object, kEvalFromSharedOffset) |
3521 ACCESSORS(Script, eval_from_instructions_offset, Smi, | 3530 ACCESSORS_TO_SMI(Script, eval_from_instructions_offset, |
3522 kEvalFrominstructionsOffsetOffset) | 3531 kEvalFrominstructionsOffsetOffset) |
3523 | 3532 |
3524 #ifdef ENABLE_DEBUGGER_SUPPORT | 3533 #ifdef ENABLE_DEBUGGER_SUPPORT |
3525 ACCESSORS(DebugInfo, shared, SharedFunctionInfo, kSharedFunctionInfoIndex) | 3534 ACCESSORS(DebugInfo, shared, SharedFunctionInfo, kSharedFunctionInfoIndex) |
3526 ACCESSORS(DebugInfo, original_code, Code, kOriginalCodeIndex) | 3535 ACCESSORS(DebugInfo, original_code, Code, kOriginalCodeIndex) |
3527 ACCESSORS(DebugInfo, code, Code, kPatchedCodeIndex) | 3536 ACCESSORS(DebugInfo, code, Code, kPatchedCodeIndex) |
3528 ACCESSORS(DebugInfo, break_points, FixedArray, kBreakPointsStateIndex) | 3537 ACCESSORS(DebugInfo, break_points, FixedArray, kBreakPointsStateIndex) |
3529 | 3538 |
3530 ACCESSORS(BreakPointInfo, code_position, Smi, kCodePositionIndex) | 3539 ACCESSORS_TO_SMI(BreakPointInfo, code_position, kCodePositionIndex) |
3531 ACCESSORS(BreakPointInfo, source_position, Smi, kSourcePositionIndex) | 3540 ACCESSORS_TO_SMI(BreakPointInfo, source_position, kSourcePositionIndex) |
3532 ACCESSORS(BreakPointInfo, statement_position, Smi, kStatementPositionIndex) | 3541 ACCESSORS_TO_SMI(BreakPointInfo, statement_position, kStatementPositionIndex) |
3533 ACCESSORS(BreakPointInfo, break_point_objects, Object, kBreakPointObjectsIndex) | 3542 ACCESSORS(BreakPointInfo, break_point_objects, Object, kBreakPointObjectsIndex) |
3534 #endif | 3543 #endif |
3535 | 3544 |
3536 ACCESSORS(SharedFunctionInfo, name, Object, kNameOffset) | 3545 ACCESSORS(SharedFunctionInfo, name, Object, kNameOffset) |
3537 ACCESSORS(SharedFunctionInfo, construct_stub, Code, kConstructStubOffset) | 3546 ACCESSORS(SharedFunctionInfo, construct_stub, Code, kConstructStubOffset) |
3538 ACCESSORS(SharedFunctionInfo, initial_map, Object, kInitialMapOffset) | 3547 ACCESSORS(SharedFunctionInfo, initial_map, Object, kInitialMapOffset) |
3539 ACCESSORS(SharedFunctionInfo, instance_class_name, Object, | 3548 ACCESSORS(SharedFunctionInfo, instance_class_name, Object, |
3540 kInstanceClassNameOffset) | 3549 kInstanceClassNameOffset) |
3541 ACCESSORS(SharedFunctionInfo, function_data, Object, kFunctionDataOffset) | 3550 ACCESSORS(SharedFunctionInfo, function_data, Object, kFunctionDataOffset) |
3542 ACCESSORS(SharedFunctionInfo, script, Object, kScriptOffset) | 3551 ACCESSORS(SharedFunctionInfo, script, Object, kScriptOffset) |
(...skipping 1391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4934 | 4943 |
4935 template<int start_offset> | 4944 template<int start_offset> |
4936 void FlexibleBodyDescriptor<start_offset>::IterateBody(HeapObject* obj, | 4945 void FlexibleBodyDescriptor<start_offset>::IterateBody(HeapObject* obj, |
4937 int object_size, | 4946 int object_size, |
4938 ObjectVisitor* v) { | 4947 ObjectVisitor* v) { |
4939 v->VisitPointers(SLOT_ADDR(obj, start_offset), SLOT_ADDR(obj, object_size)); | 4948 v->VisitPointers(SLOT_ADDR(obj, start_offset), SLOT_ADDR(obj, object_size)); |
4940 } | 4949 } |
4941 | 4950 |
4942 #undef SLOT_ADDR | 4951 #undef SLOT_ADDR |
4943 | 4952 |
4944 | 4953 #undef TYPE_CHECKER |
4945 #undef CAST_ACCESSOR | 4954 #undef CAST_ACCESSOR |
4946 #undef INT_ACCESSORS | 4955 #undef INT_ACCESSORS |
4956 #undef ACCESSORS | |
4957 #undef ACCESSORS_TO_SMI | |
4947 #undef SMI_ACCESSORS | 4958 #undef SMI_ACCESSORS |
4948 #undef ACCESSORS | 4959 #undef BOOL_GETTER |
4960 #undef BOOL_ACCESSORS | |
4949 #undef FIELD_ADDR | 4961 #undef FIELD_ADDR |
4950 #undef READ_FIELD | 4962 #undef READ_FIELD |
4951 #undef WRITE_FIELD | 4963 #undef WRITE_FIELD |
4952 #undef WRITE_BARRIER | 4964 #undef WRITE_BARRIER |
4953 #undef CONDITIONAL_WRITE_BARRIER | 4965 #undef CONDITIONAL_WRITE_BARRIER |
4954 #undef READ_MEMADDR_FIELD | |
4955 #undef WRITE_MEMADDR_FIELD | |
4956 #undef READ_DOUBLE_FIELD | 4966 #undef READ_DOUBLE_FIELD |
4957 #undef WRITE_DOUBLE_FIELD | 4967 #undef WRITE_DOUBLE_FIELD |
4958 #undef READ_INT_FIELD | 4968 #undef READ_INT_FIELD |
4959 #undef WRITE_INT_FIELD | 4969 #undef WRITE_INT_FIELD |
4970 #undef READ_INTPTR_FIELD | |
4971 #undef WRITE_INTPTR_FIELD | |
4972 #undef READ_UINT32_FIELD | |
4973 #undef WRITE_UINT32_FIELD | |
4960 #undef READ_SHORT_FIELD | 4974 #undef READ_SHORT_FIELD |
4961 #undef WRITE_SHORT_FIELD | 4975 #undef WRITE_SHORT_FIELD |
4962 #undef READ_BYTE_FIELD | 4976 #undef READ_BYTE_FIELD |
4963 #undef WRITE_BYTE_FIELD | 4977 #undef WRITE_BYTE_FIELD |
4964 | 4978 |
4965 | 4979 |
4966 } } // namespace v8::internal | 4980 } } // namespace v8::internal |
4967 | 4981 |
4968 #endif // V8_OBJECTS_INL_H_ | 4982 #endif // V8_OBJECTS_INL_H_ |
OLD | NEW |