Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(328)

Side by Side Diff: src/objects-inl.h

Issue 9702026: Remove write barriers for raw smi accessors. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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_
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698