| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 #include "src/hydrogen.h" | 5 #include "src/hydrogen.h" |
| 6 | 6 |
| 7 #include <sstream> | 7 #include <sstream> |
| 8 | 8 |
| 9 #include "src/v8.h" | 9 #include "src/v8.h" |
| 10 | 10 |
| (...skipping 9709 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9720 context(), nullptr, | 9720 context(), nullptr, |
| 9721 HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX)); | 9721 HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX)); |
| 9722 HValue* native_context = Add<HLoadNamedField>( | 9722 HValue* native_context = Add<HLoadNamedField>( |
| 9723 global_object, nullptr, HObjectAccess::ForGlobalObjectNativeContext()); | 9723 global_object, nullptr, HObjectAccess::ForGlobalObjectNativeContext()); |
| 9724 Add<HStoreNamedField>( | 9724 Add<HStoreNamedField>( |
| 9725 result, HObjectAccess::ForMap(), | 9725 result, HObjectAccess::ForMap(), |
| 9726 Add<HLoadNamedField>( | 9726 Add<HLoadNamedField>( |
| 9727 native_context, nullptr, | 9727 native_context, nullptr, |
| 9728 HObjectAccess::ForContextSlot(Context::ARRAY_BUFFER_MAP_INDEX))); | 9728 HObjectAccess::ForContextSlot(Context::ARRAY_BUFFER_MAP_INDEX))); |
| 9729 | 9729 |
| 9730 HConstant* empty_fixed_array = | 9730 Add<HStoreNamedField>(result, HObjectAccess::ForJSArrayBufferBackingStore(), |
| 9731 Add<HConstant>(isolate()->factory()->empty_fixed_array()); | 9731 Add<HConstant>(ExternalReference())); |
| 9732 Add<HStoreNamedField>( | |
| 9733 result, HObjectAccess::ForJSArrayOffset(JSArray::kPropertiesOffset), | |
| 9734 empty_fixed_array); | |
| 9735 Add<HStoreNamedField>( | |
| 9736 result, HObjectAccess::ForJSArrayOffset(JSArray::kElementsOffset), | |
| 9737 empty_fixed_array); | |
| 9738 Add<HStoreNamedField>( | |
| 9739 result, HObjectAccess::ForJSArrayBufferBackingStore().WithRepresentation( | |
| 9740 Representation::Smi()), | |
| 9741 graph()->GetConstant0()); | |
| 9742 Add<HStoreNamedField>(result, HObjectAccess::ForJSArrayBufferByteLength(), | 9732 Add<HStoreNamedField>(result, HObjectAccess::ForJSArrayBufferByteLength(), |
| 9743 byte_length); | 9733 byte_length); |
| 9744 Add<HStoreNamedField>(result, HObjectAccess::ForJSArrayBufferBitFieldSlot(), | 9734 Add<HStoreNamedField>(result, HObjectAccess::ForJSArrayBufferBitFieldSlot(), |
| 9745 graph()->GetConstant0()); | 9735 graph()->GetConstant0()); |
| 9746 Add<HStoreNamedField>( | 9736 Add<HStoreNamedField>( |
| 9747 result, HObjectAccess::ForJSArrayBufferBitField(), | 9737 result, HObjectAccess::ForJSArrayBufferBitField(), |
| 9748 Add<HConstant>((1 << JSArrayBuffer::IsExternal::kShift) | | 9738 Add<HConstant>((1 << JSArrayBuffer::IsExternal::kShift) | |
| 9749 (1 << JSArrayBuffer::IsNeuterable::kShift))); | 9739 (1 << JSArrayBuffer::IsNeuterable::kShift))); |
| 9750 | 9740 |
| 9751 for (int field = 0; field < v8::ArrayBuffer::kInternalFieldCount; ++field) { | 9741 for (int field = 0; field < v8::ArrayBuffer::kInternalFieldCount; ++field) { |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9938 static const int kBufferArg = 2; | 9928 static const int kBufferArg = 2; |
| 9939 static const int kByteOffsetArg = 3; | 9929 static const int kByteOffsetArg = 3; |
| 9940 static const int kByteLengthArg = 4; | 9930 static const int kByteLengthArg = 4; |
| 9941 static const int kArgsLength = 5; | 9931 static const int kArgsLength = 5; |
| 9942 DCHECK(arguments->length() == kArgsLength); | 9932 DCHECK(arguments->length() == kArgsLength); |
| 9943 | 9933 |
| 9944 | 9934 |
| 9945 CHECK_ALIVE(VisitForValue(arguments->at(kObjectArg))); | 9935 CHECK_ALIVE(VisitForValue(arguments->at(kObjectArg))); |
| 9946 HValue* obj = Pop(); | 9936 HValue* obj = Pop(); |
| 9947 | 9937 |
| 9948 if (!arguments->at(kArrayIdArg)->IsLiteral()) { | 9938 if (arguments->at(kArrayIdArg)->IsLiteral()) { |
| 9949 // This should never happen in real use, but can happen when fuzzing. | 9939 // This should never happen in real use, but can happen when fuzzing. |
| 9950 // Just bail out. | 9940 // Just bail out. |
| 9951 Bailout(kNeedSmiLiteral); | 9941 Bailout(kNeedSmiLiteral); |
| 9952 return; | 9942 return; |
| 9953 } | 9943 } |
| 9954 Handle<Object> value = | 9944 Handle<Object> value = |
| 9955 static_cast<Literal*>(arguments->at(kArrayIdArg))->value(); | 9945 static_cast<Literal*>(arguments->at(kArrayIdArg))->value(); |
| 9956 if (!value->IsSmi()) { | 9946 if (!value->IsSmi()) { |
| 9957 // This should never happen in real use, but can happen when fuzzing. | 9947 // This should never happen in real use, but can happen when fuzzing. |
| 9958 // Just bail out. | 9948 // Just bail out. |
| (...skipping 3188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13147 if (ShouldProduceTraceOutput()) { | 13137 if (ShouldProduceTraceOutput()) { |
| 13148 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 13138 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
| 13149 } | 13139 } |
| 13150 | 13140 |
| 13151 #ifdef DEBUG | 13141 #ifdef DEBUG |
| 13152 graph_->Verify(false); // No full verify. | 13142 graph_->Verify(false); // No full verify. |
| 13153 #endif | 13143 #endif |
| 13154 } | 13144 } |
| 13155 | 13145 |
| 13156 } } // namespace v8::internal | 13146 } } // namespace v8::internal |
| OLD | NEW |