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 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 } | 128 } |
129 return heap_object->GetHeap()->true_value(); | 129 return heap_object->GetHeap()->true_value(); |
130 } | 130 } |
131 | 131 |
132 | 132 |
133 void Object::Lookup(String* name, LookupResult* result) { | 133 void Object::Lookup(String* name, LookupResult* result) { |
134 Object* holder = NULL; | 134 Object* holder = NULL; |
135 if (IsJSReceiver()) { | 135 if (IsJSReceiver()) { |
136 holder = this; | 136 holder = this; |
137 } else { | 137 } else { |
138 Context* native_context = Isolate::Current()->context()->native_context(); | 138 Context* native_context = result->isolate()->context()->native_context(); |
139 if (IsNumber()) { | 139 if (IsNumber()) { |
140 holder = native_context->number_function()->instance_prototype(); | 140 holder = native_context->number_function()->instance_prototype(); |
141 } else if (IsString()) { | 141 } else if (IsString()) { |
142 holder = native_context->string_function()->instance_prototype(); | 142 holder = native_context->string_function()->instance_prototype(); |
143 } else if (IsBoolean()) { | 143 } else if (IsBoolean()) { |
144 holder = native_context->boolean_function()->instance_prototype(); | 144 holder = native_context->boolean_function()->instance_prototype(); |
145 } else { | 145 } else { |
146 Isolate::Current()->PushStackTraceAndDie( | 146 Isolate::Current()->PushStackTraceAndDie( |
147 0xDEAD0000, this, JSReceiver::cast(this)->map(), 0xDEAD0001); | 147 0xDEAD0000, this, JSReceiver::cast(this)->map(), 0xDEAD0001); |
148 } | 148 } |
(...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
606 } | 606 } |
607 | 607 |
608 | 608 |
609 MaybeObject* Object::GetProperty(Object* receiver, | 609 MaybeObject* Object::GetProperty(Object* receiver, |
610 LookupResult* result, | 610 LookupResult* result, |
611 String* name, | 611 String* name, |
612 PropertyAttributes* attributes) { | 612 PropertyAttributes* attributes) { |
613 // Make sure that the top context does not change when doing | 613 // Make sure that the top context does not change when doing |
614 // callbacks or interceptor calls. | 614 // callbacks or interceptor calls. |
615 AssertNoContextChange ncc; | 615 AssertNoContextChange ncc; |
616 Heap* heap = name->GetHeap(); | 616 Isolate* isolate = name->GetIsolate(); |
| 617 Heap* heap = isolate->heap(); |
617 | 618 |
618 // Traverse the prototype chain from the current object (this) to | 619 // Traverse the prototype chain from the current object (this) to |
619 // the holder and check for access rights. This avoids traversing the | 620 // the holder and check for access rights. This avoids traversing the |
620 // objects more than once in case of interceptors, because the | 621 // objects more than once in case of interceptors, because the |
621 // holder will always be the interceptor holder and the search may | 622 // holder will always be the interceptor holder and the search may |
622 // only continue with a current object just after the interceptor | 623 // only continue with a current object just after the interceptor |
623 // holder in the prototype chain. | 624 // holder in the prototype chain. |
624 // Proxy handlers do not use the proxy's prototype, so we can skip this. | 625 // Proxy handlers do not use the proxy's prototype, so we can skip this. |
625 if (!result->IsHandler()) { | 626 if (!result->IsHandler()) { |
626 Object* last = result->IsProperty() | 627 Object* last = result->IsProperty() |
627 ? result->holder() | 628 ? result->holder() |
628 : Object::cast(heap->null_value()); | 629 : Object::cast(heap->null_value()); |
629 ASSERT(this != this->GetPrototype()); | 630 ASSERT(this != this->GetPrototype(isolate)); |
630 for (Object* current = this; true; current = current->GetPrototype()) { | 631 for (Object* current = this; |
| 632 true; |
| 633 current = current->GetPrototype(isolate)) { |
631 if (current->IsAccessCheckNeeded()) { | 634 if (current->IsAccessCheckNeeded()) { |
632 // Check if we're allowed to read from the current object. Note | 635 // Check if we're allowed to read from the current object. Note |
633 // that even though we may not actually end up loading the named | 636 // that even though we may not actually end up loading the named |
634 // property from the current object, we still check that we have | 637 // property from the current object, we still check that we have |
635 // access to it. | 638 // access to it. |
636 // TODO(dcarney): revert. | 639 // TODO(dcarney): revert. |
637 CHECK(current->IsJSObject()); | 640 CHECK(current->IsJSObject()); |
638 JSObject* checked = JSObject::cast(current); | 641 JSObject* checked = JSObject::cast(current); |
639 if (!heap->isolate()->MayNamedAccess(checked, name, v8::ACCESS_GET)) { | 642 if (!heap->isolate()->MayNamedAccess(checked, name, v8::ACCESS_GET)) { |
640 return checked->GetPropertyWithFailedAccessCheck(receiver, | 643 return checked->GetPropertyWithFailedAccessCheck(receiver, |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
680 case NONEXISTENT: | 683 case NONEXISTENT: |
681 UNREACHABLE(); | 684 UNREACHABLE(); |
682 break; | 685 break; |
683 } | 686 } |
684 UNREACHABLE(); | 687 UNREACHABLE(); |
685 return NULL; | 688 return NULL; |
686 } | 689 } |
687 | 690 |
688 | 691 |
689 MaybeObject* Object::GetElementWithReceiver(Object* receiver, uint32_t index) { | 692 MaybeObject* Object::GetElementWithReceiver(Object* receiver, uint32_t index) { |
690 Heap* heap = IsSmi() | 693 Isolate* isolate = IsSmi() |
691 ? Isolate::Current()->heap() | 694 ? Isolate::Current() |
692 : HeapObject::cast(this)->GetHeap(); | 695 : HeapObject::cast(this)->GetIsolate(); |
| 696 Heap* heap = isolate->heap(); |
693 Object* holder = this; | 697 Object* holder = this; |
694 | 698 |
695 // Iterate up the prototype chain until an element is found or the null | 699 // Iterate up the prototype chain until an element is found or the null |
696 // prototype is encountered. | 700 // prototype is encountered. |
697 for (holder = this; | 701 for (holder = this; |
698 holder != heap->null_value(); | 702 holder != heap->null_value(); |
699 holder = holder->GetPrototype()) { | 703 holder = holder->GetPrototype(isolate)) { |
700 if (!holder->IsJSObject()) { | 704 if (!holder->IsJSObject()) { |
701 Isolate* isolate = heap->isolate(); | |
702 Context* native_context = isolate->context()->native_context(); | 705 Context* native_context = isolate->context()->native_context(); |
703 if (holder->IsNumber()) { | 706 if (holder->IsNumber()) { |
704 holder = native_context->number_function()->instance_prototype(); | 707 holder = native_context->number_function()->instance_prototype(); |
705 } else if (holder->IsString()) { | 708 } else if (holder->IsString()) { |
706 holder = native_context->string_function()->instance_prototype(); | 709 holder = native_context->string_function()->instance_prototype(); |
707 } else if (holder->IsBoolean()) { | 710 } else if (holder->IsBoolean()) { |
708 holder = native_context->boolean_function()->instance_prototype(); | 711 holder = native_context->boolean_function()->instance_prototype(); |
709 } else if (holder->IsJSProxy()) { | 712 } else if (holder->IsJSProxy()) { |
710 return JSProxy::cast(holder)->GetElementWithHandler(receiver, index); | 713 return JSProxy::cast(holder)->GetElementWithHandler(receiver, index); |
711 } else { | 714 } else { |
(...skipping 25 matching lines...) Expand all Loading... |
737 MaybeObject* result = js_object->GetElementsAccessor()->Get( | 740 MaybeObject* result = js_object->GetElementsAccessor()->Get( |
738 receiver, js_object, index); | 741 receiver, js_object, index); |
739 if (result != heap->the_hole_value()) return result; | 742 if (result != heap->the_hole_value()) return result; |
740 } | 743 } |
741 } | 744 } |
742 | 745 |
743 return heap->undefined_value(); | 746 return heap->undefined_value(); |
744 } | 747 } |
745 | 748 |
746 | 749 |
747 Object* Object::GetPrototype() { | 750 Object* Object::GetPrototype(Isolate* isolate) { |
748 if (IsSmi()) { | 751 if (IsSmi()) { |
749 Heap* heap = Isolate::Current()->heap(); | 752 Context* context = isolate->context()->native_context(); |
750 Context* context = heap->isolate()->context()->native_context(); | |
751 return context->number_function()->instance_prototype(); | 753 return context->number_function()->instance_prototype(); |
752 } | 754 } |
753 | 755 |
754 HeapObject* heap_object = HeapObject::cast(this); | 756 HeapObject* heap_object = HeapObject::cast(this); |
755 | 757 |
756 // The object is either a number, a string, a boolean, | 758 // The object is either a number, a string, a boolean, |
757 // a real JS object, or a Harmony proxy. | 759 // a real JS object, or a Harmony proxy. |
758 if (heap_object->IsJSReceiver()) { | 760 if (heap_object->IsJSReceiver()) { |
759 return heap_object->map()->prototype(); | 761 return heap_object->map()->prototype(); |
760 } | 762 } |
761 Heap* heap = heap_object->GetHeap(); | 763 Context* context = isolate->context()->native_context(); |
762 Context* context = heap->isolate()->context()->native_context(); | |
763 | 764 |
764 if (heap_object->IsHeapNumber()) { | 765 if (heap_object->IsHeapNumber()) { |
765 return context->number_function()->instance_prototype(); | 766 return context->number_function()->instance_prototype(); |
766 } | 767 } |
767 if (heap_object->IsString()) { | 768 if (heap_object->IsString()) { |
768 return context->string_function()->instance_prototype(); | 769 return context->string_function()->instance_prototype(); |
769 } | 770 } |
770 if (heap_object->IsBoolean()) { | 771 if (heap_object->IsBoolean()) { |
771 return context->boolean_function()->instance_prototype(); | 772 return context->boolean_function()->instance_prototype(); |
772 } else { | 773 } else { |
773 return heap->null_value(); | 774 return isolate->heap()->null_value(); |
774 } | 775 } |
775 } | 776 } |
776 | 777 |
777 | 778 |
778 MaybeObject* Object::GetHash(CreationFlag flag) { | 779 MaybeObject* Object::GetHash(CreationFlag flag) { |
779 // The object is either a number, a string, an odd-ball, | 780 // The object is either a number, a string, an odd-ball, |
780 // a real JS object, or a Harmony proxy. | 781 // a real JS object, or a Harmony proxy. |
781 if (IsNumber()) { | 782 if (IsNumber()) { |
782 uint32_t hash = ComputeLongHash(double_to_uint64(Number())); | 783 uint32_t hash = ComputeLongHash(double_to_uint64(Number())); |
783 return Smi::FromInt(hash & Smi::kMaxValue); | 784 return Smi::FromInt(hash & Smi::kMaxValue); |
(...skipping 1309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2093 | 2094 |
2094 | 2095 |
2095 MaybeObject* JSObject::SetElementWithCallbackSetterInPrototypes( | 2096 MaybeObject* JSObject::SetElementWithCallbackSetterInPrototypes( |
2096 uint32_t index, | 2097 uint32_t index, |
2097 Object* value, | 2098 Object* value, |
2098 bool* found, | 2099 bool* found, |
2099 StrictModeFlag strict_mode) { | 2100 StrictModeFlag strict_mode) { |
2100 Heap* heap = GetHeap(); | 2101 Heap* heap = GetHeap(); |
2101 for (Object* pt = GetPrototype(); | 2102 for (Object* pt = GetPrototype(); |
2102 pt != heap->null_value(); | 2103 pt != heap->null_value(); |
2103 pt = pt->GetPrototype()) { | 2104 pt = pt->GetPrototype(GetIsolate())) { |
2104 if (pt->IsJSProxy()) { | 2105 if (pt->IsJSProxy()) { |
2105 String* name; | 2106 String* name; |
2106 MaybeObject* maybe = GetHeap()->Uint32ToString(index); | 2107 MaybeObject* maybe = heap->Uint32ToString(index); |
2107 if (!maybe->To<String>(&name)) { | 2108 if (!maybe->To<String>(&name)) { |
2108 *found = true; // Force abort | 2109 *found = true; // Force abort |
2109 return maybe; | 2110 return maybe; |
2110 } | 2111 } |
2111 return JSProxy::cast(pt)->SetPropertyViaPrototypesWithHandler( | 2112 return JSProxy::cast(pt)->SetPropertyViaPrototypesWithHandler( |
2112 this, name, value, NONE, strict_mode, found); | 2113 this, name, value, NONE, strict_mode, found); |
2113 } | 2114 } |
2114 if (!JSObject::cast(pt)->HasDictionaryElements()) { | 2115 if (!JSObject::cast(pt)->HasDictionaryElements()) { |
2115 continue; | 2116 continue; |
2116 } | 2117 } |
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2496 void JSObject::LookupRealNamedProperty(String* name, LookupResult* result) { | 2497 void JSObject::LookupRealNamedProperty(String* name, LookupResult* result) { |
2497 LocalLookupRealNamedProperty(name, result); | 2498 LocalLookupRealNamedProperty(name, result); |
2498 if (result->IsFound()) return; | 2499 if (result->IsFound()) return; |
2499 | 2500 |
2500 LookupRealNamedPropertyInPrototypes(name, result); | 2501 LookupRealNamedPropertyInPrototypes(name, result); |
2501 } | 2502 } |
2502 | 2503 |
2503 | 2504 |
2504 void JSObject::LookupRealNamedPropertyInPrototypes(String* name, | 2505 void JSObject::LookupRealNamedPropertyInPrototypes(String* name, |
2505 LookupResult* result) { | 2506 LookupResult* result) { |
2506 Heap* heap = GetHeap(); | 2507 Isolate* isolate = GetIsolate(); |
| 2508 Heap* heap = isolate->heap(); |
2507 for (Object* pt = GetPrototype(); | 2509 for (Object* pt = GetPrototype(); |
2508 pt != heap->null_value(); | 2510 pt != heap->null_value(); |
2509 pt = pt->GetPrototype()) { | 2511 pt = pt->GetPrototype(isolate)) { |
2510 if (pt->IsJSProxy()) { | 2512 if (pt->IsJSProxy()) { |
2511 return result->HandlerResult(JSProxy::cast(pt)); | 2513 return result->HandlerResult(JSProxy::cast(pt)); |
2512 } | 2514 } |
2513 JSObject::cast(pt)->LocalLookupRealNamedProperty(name, result); | 2515 JSObject::cast(pt)->LocalLookupRealNamedProperty(name, result); |
2514 ASSERT(!(result->IsFound() && result->type() == INTERCEPTOR)); | 2516 ASSERT(!(result->IsFound() && result->type() == INTERCEPTOR)); |
2515 if (result->IsFound()) return; | 2517 if (result->IsFound()) return; |
2516 } | 2518 } |
2517 result->NotFound(); | 2519 result->NotFound(); |
2518 } | 2520 } |
2519 | 2521 |
(...skipping 5622 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8142 | 8144 |
8143 | 8145 |
8144 bool SharedFunctionInfo::CanGenerateInlineConstructor(Object* prototype) { | 8146 bool SharedFunctionInfo::CanGenerateInlineConstructor(Object* prototype) { |
8145 // Check the basic conditions for generating inline constructor code. | 8147 // Check the basic conditions for generating inline constructor code. |
8146 if (!FLAG_inline_new | 8148 if (!FLAG_inline_new |
8147 || !has_only_simple_this_property_assignments() | 8149 || !has_only_simple_this_property_assignments() |
8148 || this_property_assignments_count() == 0) { | 8150 || this_property_assignments_count() == 0) { |
8149 return false; | 8151 return false; |
8150 } | 8152 } |
8151 | 8153 |
8152 Heap* heap = GetHeap(); | 8154 Isolate* isolate = GetIsolate(); |
| 8155 Heap* heap = isolate->heap(); |
8153 | 8156 |
8154 // Traverse the proposed prototype chain looking for properties of the | 8157 // Traverse the proposed prototype chain looking for properties of the |
8155 // same names as are set by the inline constructor. | 8158 // same names as are set by the inline constructor. |
8156 for (Object* obj = prototype; | 8159 for (Object* obj = prototype; |
8157 obj != heap->null_value(); | 8160 obj != heap->null_value(); |
8158 obj = obj->GetPrototype()) { | 8161 obj = obj->GetPrototype(isolate)) { |
8159 JSReceiver* receiver = JSReceiver::cast(obj); | 8162 JSReceiver* receiver = JSReceiver::cast(obj); |
8160 for (int i = 0; i < this_property_assignments_count(); i++) { | 8163 for (int i = 0; i < this_property_assignments_count(); i++) { |
8161 LookupResult result(heap->isolate()); | 8164 LookupResult result(heap->isolate()); |
8162 String* name = GetThisPropertyAssignmentName(i); | 8165 String* name = GetThisPropertyAssignmentName(i); |
8163 receiver->LocalLookup(name, &result); | 8166 receiver->LocalLookup(name, &result); |
8164 if (result.IsFound()) { | 8167 if (result.IsFound()) { |
8165 switch (result.type()) { | 8168 switch (result.type()) { |
8166 case NORMAL: | 8169 case NORMAL: |
8167 case FIELD: | 8170 case FIELD: |
8168 case CONSTANT_FUNCTION: | 8171 case CONSTANT_FUNCTION: |
(...skipping 1435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9604 Deoptimizer::DeoptimizeAllFunctionsWith(&filter); | 9607 Deoptimizer::DeoptimizeAllFunctionsWith(&filter); |
9605 } | 9608 } |
9606 | 9609 |
9607 | 9610 |
9608 MaybeObject* JSReceiver::SetPrototype(Object* value, | 9611 MaybeObject* JSReceiver::SetPrototype(Object* value, |
9609 bool skip_hidden_prototypes) { | 9612 bool skip_hidden_prototypes) { |
9610 #ifdef DEBUG | 9613 #ifdef DEBUG |
9611 int size = Size(); | 9614 int size = Size(); |
9612 #endif | 9615 #endif |
9613 | 9616 |
9614 Heap* heap = GetHeap(); | 9617 Isolate* isolate = GetIsolate(); |
| 9618 Heap* heap = isolate->heap(); |
9615 // Silently ignore the change if value is not a JSObject or null. | 9619 // Silently ignore the change if value is not a JSObject or null. |
9616 // SpiderMonkey behaves this way. | 9620 // SpiderMonkey behaves this way. |
9617 if (!value->IsJSReceiver() && !value->IsNull()) return value; | 9621 if (!value->IsJSReceiver() && !value->IsNull()) return value; |
9618 | 9622 |
9619 // From 8.6.2 Object Internal Methods | 9623 // From 8.6.2 Object Internal Methods |
9620 // ... | 9624 // ... |
9621 // In addition, if [[Extensible]] is false the value of the [[Class]] and | 9625 // In addition, if [[Extensible]] is false the value of the [[Class]] and |
9622 // [[Prototype]] internal properties of the object may not be modified. | 9626 // [[Prototype]] internal properties of the object may not be modified. |
9623 // ... | 9627 // ... |
9624 // Implementation specific extensions that modify [[Class]], [[Prototype]] | 9628 // Implementation specific extensions that modify [[Class]], [[Prototype]] |
9625 // or [[Extensible]] must not violate the invariants defined in the preceding | 9629 // or [[Extensible]] must not violate the invariants defined in the preceding |
9626 // paragraph. | 9630 // paragraph. |
9627 if (!this->map()->is_extensible()) { | 9631 if (!this->map()->is_extensible()) { |
9628 HandleScope scope(heap->isolate()); | 9632 HandleScope scope(isolate); |
9629 Handle<Object> handle(this, heap->isolate()); | 9633 Handle<Object> handle(this, isolate); |
9630 return heap->isolate()->Throw( | 9634 return isolate->Throw( |
9631 *FACTORY->NewTypeError("non_extensible_proto", | 9635 *isolate->factory()->NewTypeError("non_extensible_proto", |
9632 HandleVector<Object>(&handle, 1))); | 9636 HandleVector<Object>(&handle, 1))); |
9633 } | 9637 } |
9634 | 9638 |
9635 // Before we can set the prototype we need to be sure | 9639 // Before we can set the prototype we need to be sure |
9636 // prototype cycles are prevented. | 9640 // prototype cycles are prevented. |
9637 // It is sufficient to validate that the receiver is not in the new prototype | 9641 // It is sufficient to validate that the receiver is not in the new prototype |
9638 // chain. | 9642 // chain. |
9639 for (Object* pt = value; pt != heap->null_value(); pt = pt->GetPrototype()) { | 9643 for (Object* pt = value; |
| 9644 pt != heap->null_value(); |
| 9645 pt = pt->GetPrototype(isolate)) { |
9640 if (JSReceiver::cast(pt) == this) { | 9646 if (JSReceiver::cast(pt) == this) { |
9641 // Cycle detected. | 9647 // Cycle detected. |
9642 HandleScope scope(heap->isolate()); | 9648 HandleScope scope(isolate); |
9643 return heap->isolate()->Throw( | 9649 return isolate->Throw( |
9644 *FACTORY->NewError("cyclic_proto", HandleVector<Object>(NULL, 0))); | 9650 *FACTORY->NewError("cyclic_proto", HandleVector<Object>(NULL, 0))); |
9645 } | 9651 } |
9646 } | 9652 } |
9647 | 9653 |
9648 JSReceiver* real_receiver = this; | 9654 JSReceiver* real_receiver = this; |
9649 | 9655 |
9650 if (skip_hidden_prototypes) { | 9656 if (skip_hidden_prototypes) { |
9651 // Find the first object in the chain whose prototype object is not | 9657 // Find the first object in the chain whose prototype object is not |
9652 // hidden and set the new prototype on that object. | 9658 // hidden and set the new prototype on that object. |
9653 Object* current_proto = real_receiver->GetPrototype(); | 9659 Object* current_proto = real_receiver->GetPrototype(); |
9654 while (current_proto->IsJSObject() && | 9660 while (current_proto->IsJSObject() && |
9655 JSReceiver::cast(current_proto)->map()->is_hidden_prototype()) { | 9661 JSReceiver::cast(current_proto)->map()->is_hidden_prototype()) { |
9656 real_receiver = JSReceiver::cast(current_proto); | 9662 real_receiver = JSReceiver::cast(current_proto); |
9657 current_proto = current_proto->GetPrototype(); | 9663 current_proto = current_proto->GetPrototype(isolate); |
9658 } | 9664 } |
9659 } | 9665 } |
9660 | 9666 |
9661 // Set the new prototype of the object. | 9667 // Set the new prototype of the object. |
9662 Map* map = real_receiver->map(); | 9668 Map* map = real_receiver->map(); |
9663 | 9669 |
9664 // Nothing to do if prototype is already set. | 9670 // Nothing to do if prototype is already set. |
9665 if (map->prototype() == value) return value; | 9671 if (map->prototype() == value) return value; |
9666 | 9672 |
9667 if (value->IsJSObject()) { | 9673 if (value->IsJSObject()) { |
(...skipping 4313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13981 set_year(Smi::FromInt(year), SKIP_WRITE_BARRIER); | 13987 set_year(Smi::FromInt(year), SKIP_WRITE_BARRIER); |
13982 set_month(Smi::FromInt(month), SKIP_WRITE_BARRIER); | 13988 set_month(Smi::FromInt(month), SKIP_WRITE_BARRIER); |
13983 set_day(Smi::FromInt(day), SKIP_WRITE_BARRIER); | 13989 set_day(Smi::FromInt(day), SKIP_WRITE_BARRIER); |
13984 set_weekday(Smi::FromInt(weekday), SKIP_WRITE_BARRIER); | 13990 set_weekday(Smi::FromInt(weekday), SKIP_WRITE_BARRIER); |
13985 set_hour(Smi::FromInt(hour), SKIP_WRITE_BARRIER); | 13991 set_hour(Smi::FromInt(hour), SKIP_WRITE_BARRIER); |
13986 set_min(Smi::FromInt(min), SKIP_WRITE_BARRIER); | 13992 set_min(Smi::FromInt(min), SKIP_WRITE_BARRIER); |
13987 set_sec(Smi::FromInt(sec), SKIP_WRITE_BARRIER); | 13993 set_sec(Smi::FromInt(sec), SKIP_WRITE_BARRIER); |
13988 } | 13994 } |
13989 | 13995 |
13990 } } // namespace v8::internal | 13996 } } // namespace v8::internal |
OLD | NEW |