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

Side by Side Diff: src/objects.h

Issue 2622833002: WIP [esnext] implement async iteration proposal (Closed)
Patch Set: Created 3 years, 11 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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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 #ifndef V8_OBJECTS_H_ 5 #ifndef V8_OBJECTS_H_
6 #define V8_OBJECTS_H_ 6 #define V8_OBJECTS_H_
7 7
8 #include <iosfwd> 8 #include <iosfwd>
9 #include <memory> 9 #include <memory>
10 10
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 V(ALLOCATION_SITE_TYPE) \ 378 V(ALLOCATION_SITE_TYPE) \
379 V(ALLOCATION_MEMENTO_TYPE) \ 379 V(ALLOCATION_MEMENTO_TYPE) \
380 V(SCRIPT_TYPE) \ 380 V(SCRIPT_TYPE) \
381 V(TYPE_FEEDBACK_INFO_TYPE) \ 381 V(TYPE_FEEDBACK_INFO_TYPE) \
382 V(ALIASED_ARGUMENTS_ENTRY_TYPE) \ 382 V(ALIASED_ARGUMENTS_ENTRY_TYPE) \
383 V(BOX_TYPE) \ 383 V(BOX_TYPE) \
384 V(PROMISE_RESOLVE_THENABLE_JOB_INFO_TYPE) \ 384 V(PROMISE_RESOLVE_THENABLE_JOB_INFO_TYPE) \
385 V(PROMISE_REACTION_JOB_INFO_TYPE) \ 385 V(PROMISE_REACTION_JOB_INFO_TYPE) \
386 V(DEBUG_INFO_TYPE) \ 386 V(DEBUG_INFO_TYPE) \
387 V(BREAK_POINT_INFO_TYPE) \ 387 V(BREAK_POINT_INFO_TYPE) \
388 V(ASYNC_GENERATOR_REQUEST_TYPE) \
388 V(PROTOTYPE_INFO_TYPE) \ 389 V(PROTOTYPE_INFO_TYPE) \
389 V(TUPLE2_TYPE) \ 390 V(TUPLE2_TYPE) \
390 V(TUPLE3_TYPE) \ 391 V(TUPLE3_TYPE) \
391 V(CONTEXT_EXTENSION_TYPE) \ 392 V(CONTEXT_EXTENSION_TYPE) \
392 V(CONSTANT_ELEMENTS_PAIR_TYPE) \ 393 V(CONSTANT_ELEMENTS_PAIR_TYPE) \
393 V(MODULE_TYPE) \ 394 V(MODULE_TYPE) \
394 V(MODULE_INFO_ENTRY_TYPE) \ 395 V(MODULE_INFO_ENTRY_TYPE) \
395 V(FIXED_ARRAY_TYPE) \ 396 V(FIXED_ARRAY_TYPE) \
396 V(TRANSITION_ARRAY_TYPE) \ 397 V(TRANSITION_ARRAY_TYPE) \
397 V(SHARED_FUNCTION_INFO_TYPE) \ 398 V(SHARED_FUNCTION_INFO_TYPE) \
398 V(CELL_TYPE) \ 399 V(CELL_TYPE) \
399 V(WEAK_CELL_TYPE) \ 400 V(WEAK_CELL_TYPE) \
400 V(PROPERTY_CELL_TYPE) \ 401 V(PROPERTY_CELL_TYPE) \
401 \ 402 \
402 V(JS_PROXY_TYPE) \ 403 V(JS_PROXY_TYPE) \
403 V(JS_GLOBAL_OBJECT_TYPE) \ 404 V(JS_GLOBAL_OBJECT_TYPE) \
404 V(JS_GLOBAL_PROXY_TYPE) \ 405 V(JS_GLOBAL_PROXY_TYPE) \
405 V(JS_SPECIAL_API_OBJECT_TYPE) \ 406 V(JS_SPECIAL_API_OBJECT_TYPE) \
406 V(JS_VALUE_TYPE) \ 407 V(JS_VALUE_TYPE) \
407 V(JS_MESSAGE_OBJECT_TYPE) \ 408 V(JS_MESSAGE_OBJECT_TYPE) \
408 V(JS_DATE_TYPE) \ 409 V(JS_DATE_TYPE) \
409 V(JS_API_OBJECT_TYPE) \ 410 V(JS_API_OBJECT_TYPE) \
410 V(JS_OBJECT_TYPE) \ 411 V(JS_OBJECT_TYPE) \
411 V(JS_ARGUMENTS_TYPE) \ 412 V(JS_ARGUMENTS_TYPE) \
412 V(JS_CONTEXT_EXTENSION_OBJECT_TYPE) \ 413 V(JS_CONTEXT_EXTENSION_OBJECT_TYPE) \
413 V(JS_GENERATOR_OBJECT_TYPE) \ 414 V(JS_GENERATOR_OBJECT_TYPE) \
415 V(JS_ASYNC_GENERATOR_OBJECT_TYPE) \
416 V(JS_ASYNC_FROM_SYNC_ITERATOR_TYPE) \
414 V(JS_MODULE_NAMESPACE_TYPE) \ 417 V(JS_MODULE_NAMESPACE_TYPE) \
415 V(JS_ARRAY_TYPE) \ 418 V(JS_ARRAY_TYPE) \
416 V(JS_ARRAY_BUFFER_TYPE) \ 419 V(JS_ARRAY_BUFFER_TYPE) \
417 V(JS_TYPED_ARRAY_TYPE) \ 420 V(JS_TYPED_ARRAY_TYPE) \
418 V(JS_DATA_VIEW_TYPE) \ 421 V(JS_DATA_VIEW_TYPE) \
419 V(JS_SET_TYPE) \ 422 V(JS_SET_TYPE) \
420 V(JS_MAP_TYPE) \ 423 V(JS_MAP_TYPE) \
421 V(JS_SET_ITERATOR_TYPE) \ 424 V(JS_SET_ITERATOR_TYPE) \
422 V(JS_MAP_ITERATOR_TYPE) \ 425 V(JS_MAP_ITERATOR_TYPE) \
423 V(JS_WEAK_MAP_TYPE) \ 426 V(JS_WEAK_MAP_TYPE) \
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 V(PROMISE_REACTION_JOB_INFO, PromiseReactionJobInfo, \ 553 V(PROMISE_REACTION_JOB_INFO, PromiseReactionJobInfo, \
551 promise_reaction_job_info) \ 554 promise_reaction_job_info) \
552 V(DEBUG_INFO, DebugInfo, debug_info) \ 555 V(DEBUG_INFO, DebugInfo, debug_info) \
553 V(BREAK_POINT_INFO, BreakPointInfo, break_point_info) \ 556 V(BREAK_POINT_INFO, BreakPointInfo, break_point_info) \
554 V(PROTOTYPE_INFO, PrototypeInfo, prototype_info) \ 557 V(PROTOTYPE_INFO, PrototypeInfo, prototype_info) \
555 V(TUPLE2, Tuple2, tuple2) \ 558 V(TUPLE2, Tuple2, tuple2) \
556 V(TUPLE3, Tuple3, tuple3) \ 559 V(TUPLE3, Tuple3, tuple3) \
557 V(CONTEXT_EXTENSION, ContextExtension, context_extension) \ 560 V(CONTEXT_EXTENSION, ContextExtension, context_extension) \
558 V(CONSTANT_ELEMENTS_PAIR, ConstantElementsPair, constant_elements_pair) \ 561 V(CONSTANT_ELEMENTS_PAIR, ConstantElementsPair, constant_elements_pair) \
559 V(MODULE, Module, module) \ 562 V(MODULE, Module, module) \
560 V(MODULE_INFO_ENTRY, ModuleInfoEntry, module_info_entry) 563 V(MODULE_INFO_ENTRY, ModuleInfoEntry, module_info_entry) \
564 V(ASYNC_GENERATOR_REQUEST, AsyncGeneratorRequest, async_generator_request)
561 565
562 // We use the full 8 bits of the instance_type field to encode heap object 566 // We use the full 8 bits of the instance_type field to encode heap object
563 // instance types. The high-order bit (bit 7) is set if the object is not a 567 // instance types. The high-order bit (bit 7) is set if the object is not a
564 // string, and cleared if it is a string. 568 // string, and cleared if it is a string.
565 const uint32_t kIsNotStringMask = 0x80; 569 const uint32_t kIsNotStringMask = 0x80;
566 const uint32_t kStringTag = 0x0; 570 const uint32_t kStringTag = 0x0;
567 const uint32_t kNotStringTag = 0x80; 571 const uint32_t kNotStringTag = 0x80;
568 572
569 // Bit 6 indicates that the object is an internalized string (if set) or not. 573 // Bit 6 indicates that the object is an internalized string (if set) or not.
570 // Bit 7 has to be clear as well. 574 // Bit 7 has to be clear as well.
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
715 FUNCTION_TEMPLATE_INFO_TYPE, 719 FUNCTION_TEMPLATE_INFO_TYPE,
716 OBJECT_TEMPLATE_INFO_TYPE, 720 OBJECT_TEMPLATE_INFO_TYPE,
717 ALLOCATION_SITE_TYPE, 721 ALLOCATION_SITE_TYPE,
718 ALLOCATION_MEMENTO_TYPE, 722 ALLOCATION_MEMENTO_TYPE,
719 SCRIPT_TYPE, 723 SCRIPT_TYPE,
720 TYPE_FEEDBACK_INFO_TYPE, 724 TYPE_FEEDBACK_INFO_TYPE,
721 ALIASED_ARGUMENTS_ENTRY_TYPE, 725 ALIASED_ARGUMENTS_ENTRY_TYPE,
722 BOX_TYPE, 726 BOX_TYPE,
723 PROMISE_RESOLVE_THENABLE_JOB_INFO_TYPE, 727 PROMISE_RESOLVE_THENABLE_JOB_INFO_TYPE,
724 PROMISE_REACTION_JOB_INFO_TYPE, 728 PROMISE_REACTION_JOB_INFO_TYPE,
729 ASYNC_GENERATOR_REQUEST_TYPE,
725 DEBUG_INFO_TYPE, 730 DEBUG_INFO_TYPE,
726 BREAK_POINT_INFO_TYPE, 731 BREAK_POINT_INFO_TYPE,
727 PROTOTYPE_INFO_TYPE, 732 PROTOTYPE_INFO_TYPE,
728 TUPLE2_TYPE, 733 TUPLE2_TYPE,
729 TUPLE3_TYPE, 734 TUPLE3_TYPE,
730 CONTEXT_EXTENSION_TYPE, 735 CONTEXT_EXTENSION_TYPE,
731 CONSTANT_ELEMENTS_PAIR_TYPE, 736 CONSTANT_ELEMENTS_PAIR_TYPE,
732 MODULE_TYPE, 737 MODULE_TYPE,
733 MODULE_INFO_ENTRY_TYPE, 738 MODULE_INFO_ENTRY_TYPE,
734 FIXED_ARRAY_TYPE, 739 FIXED_ARRAY_TYPE,
(...skipping 15 matching lines...) Expand all
750 JS_SPECIAL_API_OBJECT_TYPE, // LAST_SPECIAL_RECEIVER_TYPE 755 JS_SPECIAL_API_OBJECT_TYPE, // LAST_SPECIAL_RECEIVER_TYPE
751 JS_VALUE_TYPE, // LAST_CUSTOM_ELEMENTS_RECEIVER 756 JS_VALUE_TYPE, // LAST_CUSTOM_ELEMENTS_RECEIVER
752 JS_MESSAGE_OBJECT_TYPE, 757 JS_MESSAGE_OBJECT_TYPE,
753 JS_DATE_TYPE, 758 JS_DATE_TYPE,
754 // Like JS_OBJECT_TYPE, but created from API function. 759 // Like JS_OBJECT_TYPE, but created from API function.
755 JS_API_OBJECT_TYPE, 760 JS_API_OBJECT_TYPE,
756 JS_OBJECT_TYPE, 761 JS_OBJECT_TYPE,
757 JS_ARGUMENTS_TYPE, 762 JS_ARGUMENTS_TYPE,
758 JS_CONTEXT_EXTENSION_OBJECT_TYPE, 763 JS_CONTEXT_EXTENSION_OBJECT_TYPE,
759 JS_GENERATOR_OBJECT_TYPE, 764 JS_GENERATOR_OBJECT_TYPE,
765 JS_ASYNC_GENERATOR_OBJECT_TYPE,
766 JS_ASYNC_FROM_SYNC_ITERATOR_TYPE,
760 JS_MODULE_NAMESPACE_TYPE, 767 JS_MODULE_NAMESPACE_TYPE,
761 JS_ARRAY_TYPE, 768 JS_ARRAY_TYPE,
762 JS_ARRAY_BUFFER_TYPE, 769 JS_ARRAY_BUFFER_TYPE,
763 JS_TYPED_ARRAY_TYPE, 770 JS_TYPED_ARRAY_TYPE,
764 JS_DATA_VIEW_TYPE, 771 JS_DATA_VIEW_TYPE,
765 JS_SET_TYPE, 772 JS_SET_TYPE,
766 JS_MAP_TYPE, 773 JS_MAP_TYPE,
767 JS_SET_ITERATOR_TYPE, 774 JS_SET_ITERATOR_TYPE,
768 JS_MAP_ITERATOR_TYPE, 775 JS_MAP_ITERATOR_TYPE,
769 JS_WEAK_MAP_TYPE, 776 JS_WEAK_MAP_TYPE,
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
1041 V(FixedFloat64Array) \ 1048 V(FixedFloat64Array) \
1042 V(FixedUint8ClampedArray) \ 1049 V(FixedUint8ClampedArray) \
1043 V(ByteArray) \ 1050 V(ByteArray) \
1044 V(BytecodeArray) \ 1051 V(BytecodeArray) \
1045 V(FreeSpace) \ 1052 V(FreeSpace) \
1046 V(JSReceiver) \ 1053 V(JSReceiver) \
1047 V(JSObject) \ 1054 V(JSObject) \
1048 V(JSArgumentsObject) \ 1055 V(JSArgumentsObject) \
1049 V(JSContextExtensionObject) \ 1056 V(JSContextExtensionObject) \
1050 V(JSGeneratorObject) \ 1057 V(JSGeneratorObject) \
1058 V(JSAsyncGeneratorObject) \
1051 V(JSModuleNamespace) \ 1059 V(JSModuleNamespace) \
1052 V(Map) \ 1060 V(Map) \
1053 V(DescriptorArray) \ 1061 V(DescriptorArray) \
1054 V(FrameArray) \ 1062 V(FrameArray) \
1055 V(TransitionArray) \ 1063 V(TransitionArray) \
1056 V(LiteralsArray) \ 1064 V(LiteralsArray) \
1057 V(TypeFeedbackMetadata) \ 1065 V(TypeFeedbackMetadata) \
1058 V(TypeFeedbackVector) \ 1066 V(TypeFeedbackVector) \
1059 V(DeoptimizationInputData) \ 1067 V(DeoptimizationInputData) \
1060 V(DeoptimizationOutputData) \ 1068 V(DeoptimizationOutputData) \
(...skipping 1687 matching lines...) Expand 10 before | Expand all | Expand 10 after
2748 static const int kDoneOffset = kValueOffset + kPointerSize; 2756 static const int kDoneOffset = kValueOffset + kPointerSize;
2749 static const int kSize = kDoneOffset + kPointerSize; 2757 static const int kSize = kDoneOffset + kPointerSize;
2750 // Indices of in-object properties. 2758 // Indices of in-object properties.
2751 static const int kValueIndex = 0; 2759 static const int kValueIndex = 0;
2752 static const int kDoneIndex = 1; 2760 static const int kDoneIndex = 1;
2753 2761
2754 private: 2762 private:
2755 DISALLOW_IMPLICIT_CONSTRUCTORS(JSIteratorResult); 2763 DISALLOW_IMPLICIT_CONSTRUCTORS(JSIteratorResult);
2756 }; 2764 };
2757 2765
2766 class JSAsyncFromSyncIterator : public JSObject {
2767 public:
2768 // Async-from-Sync Iterator instances are ordinary objects that inherit
2769 // properties from the %AsyncFromSyncIteratorPrototype% intrinsic object.
2770 // Async-from-Sync Iterator instances are initially created with the internal
2771 // slots listed in Table 4.
2772 // (proposal-async-iteration/#table-async-from-sync-iterator-internal-slots)
2773 DECL_ACCESSORS(sync_iterator, HeapObject)
2774
2775 // Offsets of object fields.
2776 static const int kSyncIteratorOffset = JSObject::kHeaderSize;
2777 static const int kSize = kSyncIteratorOffset + kPointerSize;
2778
2779 private:
2780 DISALLOW_IMPLICIT_CONSTRUCTORS(JSAsyncFromSyncIterator);
2781 };
2758 2782
2759 // Common superclass for JSSloppyArgumentsObject and JSStrictArgumentsObject. 2783 // Common superclass for JSSloppyArgumentsObject and JSStrictArgumentsObject.
2760 class JSArgumentsObject: public JSObject { 2784 class JSArgumentsObject: public JSObject {
2761 public: 2785 public:
2762 // Offsets of object fields. 2786 // Offsets of object fields.
2763 static const int kLengthOffset = JSObject::kHeaderSize; 2787 static const int kLengthOffset = JSObject::kHeaderSize;
2764 static const int kHeaderSize = kLengthOffset + kPointerSize; 2788 static const int kHeaderSize = kLengthOffset + kPointerSize;
2765 // Indices of in-object properties. 2789 // Indices of in-object properties.
2766 static const int kLengthIndex = 0; 2790 static const int kLengthIndex = 0;
2767 2791
(...skipping 3860 matching lines...) Expand 10 before | Expand all | Expand 10 after
6628 static const int kSize = kContextOffset + kPointerSize; 6652 static const int kSize = kContextOffset + kPointerSize;
6629 6653
6630 DECLARE_CAST(PromiseReactionJobInfo) 6654 DECLARE_CAST(PromiseReactionJobInfo)
6631 DECLARE_PRINTER(PromiseReactionJobInfo) 6655 DECLARE_PRINTER(PromiseReactionJobInfo)
6632 DECLARE_VERIFIER(PromiseReactionJobInfo) 6656 DECLARE_VERIFIER(PromiseReactionJobInfo)
6633 6657
6634 private: 6658 private:
6635 DISALLOW_IMPLICIT_CONSTRUCTORS(PromiseReactionJobInfo); 6659 DISALLOW_IMPLICIT_CONSTRUCTORS(PromiseReactionJobInfo);
6636 }; 6660 };
6637 6661
6662 class AsyncGeneratorRequest : public Struct {
6663 public:
6664 // Holds an AsyncGeneratorRequest, or Undefined.
6665 DECL_ACCESSORS(next, Object)
6666 DECL_INT_ACCESSORS(resume_mode)
6667 DECL_ACCESSORS(value, Object)
6668 DECL_ACCESSORS(promise, Object)
6669 DECL_ACCESSORS(awaited_promise, Object)
6670
6671 static const int kNextOffset = Struct::kHeaderSize;
6672 static const int kResumeModeOffset = kNextOffset + kPointerSize;
6673 static const int kValueOffset = kResumeModeOffset + kPointerSize;
6674 static const int kPromiseOffset = kValueOffset + kPointerSize;
6675 static const int kAwaitedPromiseOffset = kPromiseOffset + kPointerSize;
6676 static const int kSize = kAwaitedPromiseOffset + kPointerSize;
6677
6678 DECLARE_CAST(AsyncGeneratorRequest)
6679 DECLARE_PRINTER(AsyncGeneratorRequest)
6680 DECLARE_VERIFIER(AsyncGeneratorRequest)
6681
6682 private:
6683 DISALLOW_IMPLICIT_CONSTRUCTORS(AsyncGeneratorRequest);
6684 };
6685
6638 // A simple one-element struct, useful where smis need to be boxed. 6686 // A simple one-element struct, useful where smis need to be boxed.
6639 class Box : public Struct { 6687 class Box : public Struct {
6640 public: 6688 public:
6641 // [value]: the boxed contents. 6689 // [value]: the boxed contents.
6642 DECL_ACCESSORS(value, Object) 6690 DECL_ACCESSORS(value, Object)
6643 6691
6644 DECLARE_CAST(Box) 6692 DECLARE_CAST(Box)
6645 6693
6646 // Dispatched behavior. 6694 // Dispatched behavior.
6647 DECLARE_PRINTER(Box) 6695 DECLARE_PRINTER(Box)
(...skipping 1273 matching lines...) Expand 10 before | Expand all | Expand 10 after
7921 static const int kInputOrDebugPosOffset = kReceiverOffset + kPointerSize; 7969 static const int kInputOrDebugPosOffset = kReceiverOffset + kPointerSize;
7922 static const int kResumeModeOffset = kInputOrDebugPosOffset + kPointerSize; 7970 static const int kResumeModeOffset = kInputOrDebugPosOffset + kPointerSize;
7923 static const int kContinuationOffset = kResumeModeOffset + kPointerSize; 7971 static const int kContinuationOffset = kResumeModeOffset + kPointerSize;
7924 static const int kRegisterFileOffset = kContinuationOffset + kPointerSize; 7972 static const int kRegisterFileOffset = kContinuationOffset + kPointerSize;
7925 static const int kSize = kRegisterFileOffset + kPointerSize; 7973 static const int kSize = kRegisterFileOffset + kPointerSize;
7926 7974
7927 private: 7975 private:
7928 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGeneratorObject); 7976 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGeneratorObject);
7929 }; 7977 };
7930 7978
7979 class JSAsyncGeneratorObject : public JSGeneratorObject {
7980 public:
7981 DECLARE_CAST(JSAsyncGeneratorObject)
7982
7983 // Dispatched behavior.
7984 DECLARE_VERIFIER(JSAsyncGeneratorObject)
7985
7986 // [queue]
7987 // Pointer to the head of a singly linked list of AsyncGeneratorRequest, or
7988 // undefined.
7989 DECL_ACCESSORS(queue, HeapObject)
7990
7991 // [awaited_promise]
7992 // A reference to the Promise of an AwaitExpression.
7993 DECL_ACCESSORS(awaited_promise, HeapObject)
7994
7995 // Layout description.
7996 static const int kQueueOffset = JSGeneratorObject::kSize;
7997 static const int kSize = kQueueOffset + kPointerSize;
7998
7999 private:
8000 DISALLOW_IMPLICIT_CONSTRUCTORS(JSAsyncGeneratorObject);
8001 };
8002
7931 class ModuleInfoEntry : public Struct { 8003 class ModuleInfoEntry : public Struct {
7932 public: 8004 public:
7933 DECLARE_CAST(ModuleInfoEntry) 8005 DECLARE_CAST(ModuleInfoEntry)
7934 DECLARE_PRINTER(ModuleInfoEntry) 8006 DECLARE_PRINTER(ModuleInfoEntry)
7935 DECLARE_VERIFIER(ModuleInfoEntry) 8007 DECLARE_VERIFIER(ModuleInfoEntry)
7936 8008
7937 DECL_ACCESSORS(export_name, Object) 8009 DECL_ACCESSORS(export_name, Object)
7938 DECL_ACCESSORS(local_name, Object) 8010 DECL_ACCESSORS(local_name, Object)
7939 DECL_ACCESSORS(import_name, Object) 8011 DECL_ACCESSORS(import_name, Object)
7940 DECL_INT_ACCESSORS(module_request) 8012 DECL_INT_ACCESSORS(module_request)
(...skipping 3815 matching lines...) Expand 10 before | Expand all | Expand 10 after
11756 } 11828 }
11757 }; 11829 };
11758 11830
11759 11831
11760 } // NOLINT, false-positive due to second-order macros. 11832 } // NOLINT, false-positive due to second-order macros.
11761 } // NOLINT, false-positive due to second-order macros. 11833 } // NOLINT, false-positive due to second-order macros.
11762 11834
11763 #include "src/objects/object-macros-undef.h" 11835 #include "src/objects/object-macros-undef.h"
11764 11836
11765 #endif // V8_OBJECTS_H_ 11837 #endif // V8_OBJECTS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698