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

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

Issue 1542963002: [runtime] Introduce dedicated JSBoundFunction to represent bound functions. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@FunctionConstructor
Patch Set: arm port. Created 4 years, 12 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // Review notes: 5 // Review notes:
6 // 6 //
7 // - The use of macros in these inline functions may seem superfluous 7 // - The use of macros in these inline functions may seem superfluous
8 // but it is absolutely needed to make sure gcc generates optimal 8 // but it is absolutely needed to make sure gcc generates optimal
9 // code. gcc is not happy when attempting to inline too deep. 9 // code. gcc is not happy when attempting to inline too deep.
10 // 10 //
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 return Object::IsHeapObject() && 180 return Object::IsHeapObject() &&
181 HeapObject::cast(this)->map()->instance_type() <= LAST_NAME_TYPE; 181 HeapObject::cast(this)->map()->instance_type() <= LAST_NAME_TYPE;
182 } 182 }
183 183
184 184
185 bool Object::IsUniqueName() const { 185 bool Object::IsUniqueName() const {
186 return IsInternalizedString() || IsSymbol(); 186 return IsInternalizedString() || IsSymbol();
187 } 187 }
188 188
189 189
190 bool Object::IsFunction() const {
191 STATIC_ASSERT(LAST_FUNCTION_TYPE == LAST_TYPE);
192 return Object::IsHeapObject() &&
193 HeapObject::cast(this)->map()->instance_type() >= FIRST_FUNCTION_TYPE;
194 }
195
196
190 bool Object::IsCallable() const { 197 bool Object::IsCallable() const {
191 return Object::IsHeapObject() && HeapObject::cast(this)->map()->is_callable(); 198 return Object::IsHeapObject() && HeapObject::cast(this)->map()->is_callable();
192 } 199 }
193 200
194 201
195 bool Object::IsConstructor() const { 202 bool Object::IsConstructor() const {
196 return Object::IsHeapObject() && 203 return Object::IsHeapObject() &&
197 HeapObject::cast(this)->map()->is_constructor(); 204 HeapObject::cast(this)->map()->is_constructor();
198 } 205 }
199 206
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 } 741 }
735 742
736 743
737 bool Object::IsTypeFeedbackVector() const { return IsFixedArray(); } 744 bool Object::IsTypeFeedbackVector() const { return IsFixedArray(); }
738 745
739 746
740 bool Object::IsTypeFeedbackMetadata() const { return IsFixedArray(); } 747 bool Object::IsTypeFeedbackMetadata() const { return IsFixedArray(); }
741 748
742 749
743 bool Object::IsLiteralsArray() const { return IsFixedArray(); } 750 bool Object::IsLiteralsArray() const { return IsFixedArray(); }
744 bool Object::IsBindingsArray() const { return IsFixedArray(); }
745 751
746 752
747 bool Object::IsDeoptimizationInputData() const { 753 bool Object::IsDeoptimizationInputData() const {
748 // Must be a fixed array. 754 // Must be a fixed array.
749 if (!IsFixedArray()) return false; 755 if (!IsFixedArray()) return false;
750 756
751 // There's no sure way to detect the difference between a fixed array and 757 // There's no sure way to detect the difference between a fixed array and
752 // a deoptimization data array. Since this is used for asserts we can 758 // a deoptimization data array. Since this is used for asserts we can
753 // check that the length is zero or else the fixed size plus a multiple of 759 // check that the length is zero or else the fixed size plus a multiple of
754 // the entry size. 760 // the entry size.
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
815 } 821 }
816 822
817 823
818 bool Object::IsScopeInfo() const { 824 bool Object::IsScopeInfo() const {
819 return Object::IsHeapObject() && 825 return Object::IsHeapObject() &&
820 HeapObject::cast(this)->map() == 826 HeapObject::cast(this)->map() ==
821 HeapObject::cast(this)->GetHeap()->scope_info_map(); 827 HeapObject::cast(this)->GetHeap()->scope_info_map();
822 } 828 }
823 829
824 830
831 TYPE_CHECKER(JSBoundFunction, JS_BOUND_FUNCTION_TYPE)
825 TYPE_CHECKER(JSFunction, JS_FUNCTION_TYPE) 832 TYPE_CHECKER(JSFunction, JS_FUNCTION_TYPE)
826 833
827 834
828 template <> inline bool Is<JSFunction>(Object* obj) { 835 template <> inline bool Is<JSFunction>(Object* obj) {
829 return obj->IsJSFunction(); 836 return obj->IsJSFunction();
830 } 837 }
831 838
832 839
833 TYPE_CHECKER(Code, CODE_TYPE) 840 TYPE_CHECKER(Code, CODE_TYPE)
834 TYPE_CHECKER(Oddball, ODDBALL_TYPE) 841 TYPE_CHECKER(Oddball, ODDBALL_TYPE)
(...skipping 1242 matching lines...) Expand 10 before | Expand all | Expand 10 after
2077 if (type == JS_OBJECT_TYPE) return JSObject::kHeaderSize; 2084 if (type == JS_OBJECT_TYPE) return JSObject::kHeaderSize;
2078 switch (type) { 2085 switch (type) {
2079 case JS_GENERATOR_OBJECT_TYPE: 2086 case JS_GENERATOR_OBJECT_TYPE:
2080 return JSGeneratorObject::kSize; 2087 return JSGeneratorObject::kSize;
2081 case JS_MODULE_TYPE: 2088 case JS_MODULE_TYPE:
2082 return JSModule::kSize; 2089 return JSModule::kSize;
2083 case JS_GLOBAL_PROXY_TYPE: 2090 case JS_GLOBAL_PROXY_TYPE:
2084 return JSGlobalProxy::kSize; 2091 return JSGlobalProxy::kSize;
2085 case JS_GLOBAL_OBJECT_TYPE: 2092 case JS_GLOBAL_OBJECT_TYPE:
2086 return JSGlobalObject::kSize; 2093 return JSGlobalObject::kSize;
2094 case JS_BOUND_FUNCTION_TYPE:
2095 return JSBoundFunction::kSize;
2087 case JS_FUNCTION_TYPE: 2096 case JS_FUNCTION_TYPE:
2088 return JSFunction::kSize; 2097 return JSFunction::kSize;
2089 case JS_VALUE_TYPE: 2098 case JS_VALUE_TYPE:
2090 return JSValue::kSize; 2099 return JSValue::kSize;
2091 case JS_DATE_TYPE: 2100 case JS_DATE_TYPE:
2092 return JSDate::kSize; 2101 return JSDate::kSize;
2093 case JS_ARRAY_TYPE: 2102 case JS_ARRAY_TYPE:
2094 return JSArray::kSize; 2103 return JSArray::kSize;
2095 case JS_ARRAY_BUFFER_TYPE: 2104 case JS_ARRAY_BUFFER_TYPE:
2096 return JSArrayBuffer::kSize; 2105 return JSArrayBuffer::kSize;
(...skipping 1113 matching lines...) Expand 10 before | Expand all | Expand 10 after
3210 CAST_ACCESSOR(Foreign) 3219 CAST_ACCESSOR(Foreign)
3211 CAST_ACCESSOR(GlobalDictionary) 3220 CAST_ACCESSOR(GlobalDictionary)
3212 CAST_ACCESSOR(HandlerTable) 3221 CAST_ACCESSOR(HandlerTable)
3213 CAST_ACCESSOR(HeapObject) 3222 CAST_ACCESSOR(HeapObject)
3214 CAST_ACCESSOR(Int16x8) 3223 CAST_ACCESSOR(Int16x8)
3215 CAST_ACCESSOR(Int32x4) 3224 CAST_ACCESSOR(Int32x4)
3216 CAST_ACCESSOR(Int8x16) 3225 CAST_ACCESSOR(Int8x16)
3217 CAST_ACCESSOR(JSArray) 3226 CAST_ACCESSOR(JSArray)
3218 CAST_ACCESSOR(JSArrayBuffer) 3227 CAST_ACCESSOR(JSArrayBuffer)
3219 CAST_ACCESSOR(JSArrayBufferView) 3228 CAST_ACCESSOR(JSArrayBufferView)
3229 CAST_ACCESSOR(JSBoundFunction)
3220 CAST_ACCESSOR(JSDataView) 3230 CAST_ACCESSOR(JSDataView)
3221 CAST_ACCESSOR(JSDate) 3231 CAST_ACCESSOR(JSDate)
3222 CAST_ACCESSOR(JSFunction) 3232 CAST_ACCESSOR(JSFunction)
3223 CAST_ACCESSOR(JSGeneratorObject) 3233 CAST_ACCESSOR(JSGeneratorObject)
3224 CAST_ACCESSOR(JSGlobalObject) 3234 CAST_ACCESSOR(JSGlobalObject)
3225 CAST_ACCESSOR(JSGlobalProxy) 3235 CAST_ACCESSOR(JSGlobalProxy)
3226 CAST_ACCESSOR(JSMap) 3236 CAST_ACCESSOR(JSMap)
3227 CAST_ACCESSOR(JSMapIterator) 3237 CAST_ACCESSOR(JSMapIterator)
3228 CAST_ACCESSOR(JSMessageObject) 3238 CAST_ACCESSOR(JSMessageObject)
3229 CAST_ACCESSOR(JSModule) 3239 CAST_ACCESSOR(JSModule)
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
3413 void LiteralsArray::set_literal(int literal_index, Object* literal) { 3423 void LiteralsArray::set_literal(int literal_index, Object* literal) {
3414 set(kFirstLiteralIndex + literal_index, literal); 3424 set(kFirstLiteralIndex + literal_index, literal);
3415 } 3425 }
3416 3426
3417 3427
3418 int LiteralsArray::literals_count() const { 3428 int LiteralsArray::literals_count() const {
3419 return length() - kFirstLiteralIndex; 3429 return length() - kFirstLiteralIndex;
3420 } 3430 }
3421 3431
3422 3432
3423 Object* BindingsArray::get(int index) const { return FixedArray::get(index); }
3424
3425
3426 void BindingsArray::set(int index, Object* value) {
3427 FixedArray::set(index, value);
3428 }
3429
3430
3431 void BindingsArray::set(int index, Smi* value) {
3432 FixedArray::set(index, value);
3433 }
3434
3435
3436 void BindingsArray::set(int index, Object* value, WriteBarrierMode mode) {
3437 FixedArray::set(index, value, mode);
3438 }
3439
3440
3441 int BindingsArray::length() const { return FixedArray::length(); }
3442
3443
3444 BindingsArray* BindingsArray::cast(Object* object) {
3445 SLOW_DCHECK(object->IsBindingsArray());
3446 return reinterpret_cast<BindingsArray*>(object);
3447 }
3448
3449 void BindingsArray::set_feedback_vector(TypeFeedbackVector* vector) {
3450 set(kVectorIndex, vector);
3451 }
3452
3453
3454 TypeFeedbackVector* BindingsArray::feedback_vector() const {
3455 return TypeFeedbackVector::cast(get(kVectorIndex));
3456 }
3457
3458
3459 JSReceiver* BindingsArray::bound_function() const {
3460 return JSReceiver::cast(get(kBoundFunctionIndex));
3461 }
3462
3463
3464 void BindingsArray::set_bound_function(JSReceiver* function) {
3465 set(kBoundFunctionIndex, function);
3466 }
3467
3468
3469 Object* BindingsArray::bound_this() const { return get(kBoundThisIndex); }
3470
3471
3472 void BindingsArray::set_bound_this(Object* bound_this) {
3473 set(kBoundThisIndex, bound_this);
3474 }
3475
3476
3477 Object* BindingsArray::binding(int binding_index) const {
3478 return get(kFirstBindingIndex + binding_index);
3479 }
3480
3481
3482 void BindingsArray::set_binding(int binding_index, Object* binding) {
3483 set(kFirstBindingIndex + binding_index, binding);
3484 }
3485
3486
3487 int BindingsArray::bindings_count() const {
3488 return length() - kFirstBindingIndex;
3489 }
3490
3491
3492 void HandlerTable::SetRangeStart(int index, int value) { 3433 void HandlerTable::SetRangeStart(int index, int value) {
3493 set(index * kRangeEntrySize + kRangeStartIndex, Smi::FromInt(value)); 3434 set(index * kRangeEntrySize + kRangeStartIndex, Smi::FromInt(value));
3494 } 3435 }
3495 3436
3496 3437
3497 void HandlerTable::SetRangeEnd(int index, int value) { 3438 void HandlerTable::SetRangeEnd(int index, int value) {
3498 set(index * kRangeEntrySize + kRangeEndIndex, Smi::FromInt(value)); 3439 set(index * kRangeEntrySize + kRangeEndIndex, Smi::FromInt(value));
3499 } 3440 }
3500 3441
3501 3442
(...skipping 1031 matching lines...) Expand 10 before | Expand all | Expand 10 after
4533 set_bit_field(bit_field() & ~(1 << kHasNonInstancePrototype)); 4474 set_bit_field(bit_field() & ~(1 << kHasNonInstancePrototype));
4534 } 4475 }
4535 } 4476 }
4536 4477
4537 4478
4538 bool Map::has_non_instance_prototype() { 4479 bool Map::has_non_instance_prototype() {
4539 return ((1 << kHasNonInstancePrototype) & bit_field()) != 0; 4480 return ((1 << kHasNonInstancePrototype) & bit_field()) != 0;
4540 } 4481 }
4541 4482
4542 4483
4543 void Map::set_is_constructor(bool value) { 4484 void Map::set_is_constructor() {
Camillo Bruni 2015/12/23 13:52:27 This method was bothering me more that it should ;
Benedikt Meurer 2015/12/24 06:28:18 Acknowledged.
4544 if (value) { 4485 set_bit_field(bit_field() | (1 << kIsConstructor));
4545 set_bit_field(bit_field() | (1 << kIsConstructor));
4546 } else {
4547 set_bit_field(bit_field() & ~(1 << kIsConstructor));
4548 }
4549 } 4486 }
4550 4487
4551 4488
4552 bool Map::is_constructor() const { 4489 bool Map::is_constructor() const {
4553 return ((1 << kIsConstructor) & bit_field()) != 0; 4490 return ((1 << kIsConstructor) & bit_field()) != 0;
4554 } 4491 }
4555 4492
4556 4493
4557 void Map::set_is_hidden_prototype() { 4494 void Map::set_is_hidden_prototype() {
4558 set_bit_field3(IsHiddenPrototype::update(bit_field3(), true)); 4495 set_bit_field3(IsHiddenPrototype::update(bit_field3(), true));
(...skipping 965 matching lines...) Expand 10 before | Expand all | Expand 10 after
5524 set_constructor_or_backpointer(constructor, mode); 5461 set_constructor_or_backpointer(constructor, mode);
5525 } 5462 }
5526 5463
5527 5464
5528 Handle<Map> Map::CopyInitialMap(Handle<Map> map) { 5465 Handle<Map> Map::CopyInitialMap(Handle<Map> map) {
5529 return CopyInitialMap(map, map->instance_size(), map->GetInObjectProperties(), 5466 return CopyInitialMap(map, map->instance_size(), map->GetInObjectProperties(),
5530 map->unused_property_fields()); 5467 map->unused_property_fields());
5531 } 5468 }
5532 5469
5533 5470
5471 ACCESSORS(JSBoundFunction, length, Object, kLengthOffset)
5472 ACCESSORS(JSBoundFunction, name, Object, kNameOffset)
5473 ACCESSORS(JSBoundFunction, bound_target_function, JSReceiver,
5474 kBoundTargetFunctionOffset)
5475 ACCESSORS(JSBoundFunction, bound_this, Object, kBoundThisOffset)
5476 ACCESSORS(JSBoundFunction, bound_arguments, FixedArray, kBoundArgumentsOffset)
5477
5534 ACCESSORS(JSFunction, shared, SharedFunctionInfo, kSharedFunctionInfoOffset) 5478 ACCESSORS(JSFunction, shared, SharedFunctionInfo, kSharedFunctionInfoOffset)
5535 ACCESSORS(JSFunction, literals_or_bindings, FixedArray, kLiteralsOffset) 5479 ACCESSORS(JSFunction, literals, LiteralsArray, kLiteralsOffset)
5536 ACCESSORS(JSFunction, next_function_link, Object, kNextFunctionLinkOffset) 5480 ACCESSORS(JSFunction, next_function_link, Object, kNextFunctionLinkOffset)
5537 5481
5538 ACCESSORS(JSGlobalObject, native_context, Context, kNativeContextOffset) 5482 ACCESSORS(JSGlobalObject, native_context, Context, kNativeContextOffset)
5539 ACCESSORS(JSGlobalObject, global_proxy, JSObject, kGlobalProxyOffset) 5483 ACCESSORS(JSGlobalObject, global_proxy, JSObject, kGlobalProxyOffset)
5540 5484
5541 ACCESSORS(JSGlobalProxy, native_context, Object, kNativeContextOffset) 5485 ACCESSORS(JSGlobalProxy, native_context, Object, kNativeContextOffset)
5542 ACCESSORS(JSGlobalProxy, hash, Object, kHashOffset) 5486 ACCESSORS(JSGlobalProxy, hash, Object, kHashOffset)
5543 5487
5544 ACCESSORS(AccessorInfo, name, Object, kNameOffset) 5488 ACCESSORS(AccessorInfo, name, Object, kNameOffset)
5545 SMI_ACCESSORS(AccessorInfo, flag, kFlagOffset) 5489 SMI_ACCESSORS(AccessorInfo, flag, kFlagOffset)
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
5868 } 5812 }
5869 5813
5870 5814
5871 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, needs_home_object, 5815 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, needs_home_object,
5872 kNeedsHomeObject) 5816 kNeedsHomeObject)
5873 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, native, kNative) 5817 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, native, kNative)
5874 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, force_inline, kForceInline) 5818 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, force_inline, kForceInline)
5875 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, 5819 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints,
5876 name_should_print_as_anonymous, 5820 name_should_print_as_anonymous,
5877 kNameShouldPrintAsAnonymous) 5821 kNameShouldPrintAsAnonymous)
5878 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, bound, kBoundFunction)
5879 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_anonymous, kIsAnonymous) 5822 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_anonymous, kIsAnonymous)
5880 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_function, kIsFunction) 5823 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_function, kIsFunction)
5881 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, dont_crankshaft, 5824 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, dont_crankshaft,
5882 kDontCrankshaft) 5825 kDontCrankshaft)
5883 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, dont_flush, kDontFlush) 5826 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, dont_flush, kDontFlush)
5884 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_arrow, kIsArrow) 5827 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_arrow, kIsArrow)
5885 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_generator, kIsGenerator) 5828 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_generator, kIsGenerator)
5886 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_concise_method, 5829 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_concise_method,
5887 kIsConciseMethod) 5830 kIsConciseMethod)
5888 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_accessor_function, 5831 BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_accessor_function,
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after
6313 6256
6314 6257
6315 bool JSFunction::is_compiled() { 6258 bool JSFunction::is_compiled() {
6316 Builtins* builtins = GetIsolate()->builtins(); 6259 Builtins* builtins = GetIsolate()->builtins();
6317 return code() != builtins->builtin(Builtins::kCompileLazy) && 6260 return code() != builtins->builtin(Builtins::kCompileLazy) &&
6318 code() != builtins->builtin(Builtins::kCompileOptimized) && 6261 code() != builtins->builtin(Builtins::kCompileOptimized) &&
6319 code() != builtins->builtin(Builtins::kCompileOptimizedConcurrent); 6262 code() != builtins->builtin(Builtins::kCompileOptimizedConcurrent);
6320 } 6263 }
6321 6264
6322 6265
6323 LiteralsArray* JSFunction::literals() {
6324 DCHECK(!shared()->bound());
6325 return LiteralsArray::cast(literals_or_bindings());
6326 }
6327
6328
6329 void JSFunction::set_literals(LiteralsArray* literals) {
6330 DCHECK(!shared()->bound());
6331 set_literals_or_bindings(literals);
6332 }
6333
6334
6335 BindingsArray* JSFunction::function_bindings() {
6336 DCHECK(shared()->bound());
6337 return BindingsArray::cast(literals_or_bindings());
6338 }
6339
6340
6341 void JSFunction::set_function_bindings(BindingsArray* bindings) {
6342 DCHECK(shared()->bound());
6343 // Bound function literal may be initialized to the empty fixed array
6344 // before the bindings are set.
6345 DCHECK(bindings == GetHeap()->empty_fixed_array() ||
6346 bindings->map() == GetHeap()->fixed_array_map());
6347 set_literals_or_bindings(bindings);
6348 }
6349
6350
6351 int JSFunction::NumberOfLiterals() { 6266 int JSFunction::NumberOfLiterals() {
6352 DCHECK(!shared()->bound());
6353 return literals()->length(); 6267 return literals()->length();
6354 } 6268 }
6355 6269
6356 6270
6357 ACCESSORS(JSProxy, target, JSReceiver, kTargetOffset) 6271 ACCESSORS(JSProxy, target, JSReceiver, kTargetOffset)
6358 ACCESSORS(JSProxy, handler, Object, kHandlerOffset) 6272 ACCESSORS(JSProxy, handler, Object, kHandlerOffset)
6359 ACCESSORS(JSProxy, hash, Object, kHashOffset) 6273 ACCESSORS(JSProxy, hash, Object, kHashOffset)
6360 6274
6361 bool JSProxy::IsRevoked() const { return !handler()->IsJSReceiver(); } 6275 bool JSProxy::IsRevoked() const { return !handler()->IsJSReceiver(); }
6362 6276
(...skipping 1522 matching lines...) Expand 10 before | Expand all | Expand 10 after
7885 #undef WRITE_INT64_FIELD 7799 #undef WRITE_INT64_FIELD
7886 #undef READ_BYTE_FIELD 7800 #undef READ_BYTE_FIELD
7887 #undef WRITE_BYTE_FIELD 7801 #undef WRITE_BYTE_FIELD
7888 #undef NOBARRIER_READ_BYTE_FIELD 7802 #undef NOBARRIER_READ_BYTE_FIELD
7889 #undef NOBARRIER_WRITE_BYTE_FIELD 7803 #undef NOBARRIER_WRITE_BYTE_FIELD
7890 7804
7891 } // namespace internal 7805 } // namespace internal
7892 } // namespace v8 7806 } // namespace v8
7893 7807
7894 #endif // V8_OBJECTS_INL_H_ 7808 #endif // V8_OBJECTS_INL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698