OLD | NEW |
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 #include "src/isolate.h" | 5 #include "src/isolate.h" |
6 | 6 |
7 #include <stdlib.h> | 7 #include <stdlib.h> |
8 | 8 |
9 #include <fstream> // NOLINT(readability/streams) | 9 #include <fstream> // NOLINT(readability/streams) |
10 #include <sstream> | 10 #include <sstream> |
(...skipping 1080 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1091 } | 1091 } |
1092 | 1092 |
1093 // Generate the message if required. | 1093 // Generate the message if required. |
1094 if (requires_message && !rethrowing_message) { | 1094 if (requires_message && !rethrowing_message) { |
1095 MessageLocation computed_location; | 1095 MessageLocation computed_location; |
1096 // If no location was specified we try to use a computed one instead. | 1096 // If no location was specified we try to use a computed one instead. |
1097 if (location == NULL && ComputeLocation(&computed_location)) { | 1097 if (location == NULL && ComputeLocation(&computed_location)) { |
1098 location = &computed_location; | 1098 location = &computed_location; |
1099 } | 1099 } |
1100 | 1100 |
1101 if (bootstrapper()->IsActive()) { | 1101 if (false && bootstrapper()->IsActive()) { |
1102 // It's not safe to try to make message objects or collect stack traces | 1102 // It's not safe to try to make message objects or collect stack traces |
1103 // while the bootstrapper is active since the infrastructure may not have | 1103 // while the bootstrapper is active since the infrastructure may not have |
1104 // been properly initialized. | 1104 // been properly initialized. |
1105 ReportBootstrappingException(exception_handle, location); | 1105 ReportBootstrappingException(exception_handle, location); |
1106 } else { | 1106 } else { |
1107 Handle<Object> message_obj = CreateMessage(exception_handle, location); | 1107 Handle<Object> message_obj = CreateMessage(exception_handle, location); |
1108 thread_local_top()->pending_message_obj_ = *message_obj; | 1108 thread_local_top()->pending_message_obj_ = *message_obj; |
1109 | 1109 |
1110 // For any exception not caught by JavaScript, even when an external | 1110 // For any exception not caught by JavaScript, even when an external |
1111 // handler is present: | 1111 // handler is present: |
(...skipping 1805 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2917 | 2917 |
2918 void Isolate::InvalidateStringLengthOverflowProtector() { | 2918 void Isolate::InvalidateStringLengthOverflowProtector() { |
2919 DCHECK(factory()->string_length_protector()->value()->IsSmi()); | 2919 DCHECK(factory()->string_length_protector()->value()->IsSmi()); |
2920 DCHECK(IsStringLengthOverflowIntact()); | 2920 DCHECK(IsStringLengthOverflowIntact()); |
2921 PropertyCell::SetValueWithInvalidation( | 2921 PropertyCell::SetValueWithInvalidation( |
2922 factory()->string_length_protector(), | 2922 factory()->string_length_protector(), |
2923 handle(Smi::FromInt(kArrayProtectorInvalid), this)); | 2923 handle(Smi::FromInt(kArrayProtectorInvalid), this)); |
2924 DCHECK(!IsStringLengthOverflowIntact()); | 2924 DCHECK(!IsStringLengthOverflowIntact()); |
2925 } | 2925 } |
2926 | 2926 |
| 2927 void Isolate::InvalidateArrayIteratorProtector() { |
| 2928 DCHECK(Smi::cast(heap()->array_iterator_protector()->value())->value() == |
| 2929 kArrayProtectorValid); |
| 2930 PropertyCell::SetValueWithInvalidation( |
| 2931 factory()->array_iterator_protector(), |
| 2932 handle(Smi::FromInt(kArrayProtectorInvalid), this)); |
| 2933 } |
| 2934 |
2927 bool Isolate::IsAnyInitialArrayPrototype(Handle<JSArray> array) { | 2935 bool Isolate::IsAnyInitialArrayPrototype(Handle<JSArray> array) { |
2928 DisallowHeapAllocation no_gc; | 2936 DisallowHeapAllocation no_gc; |
2929 return IsInAnyContext(*array, Context::INITIAL_ARRAY_PROTOTYPE_INDEX); | 2937 return IsInAnyContext(*array, Context::INITIAL_ARRAY_PROTOTYPE_INDEX); |
2930 } | 2938 } |
2931 | 2939 |
2932 | 2940 |
2933 CallInterfaceDescriptorData* Isolate::call_descriptor_data(int index) { | 2941 CallInterfaceDescriptorData* Isolate::call_descriptor_data(int index) { |
2934 DCHECK(0 <= index && index < CallDescriptors::NUMBER_OF_DESCRIPTORS); | 2942 DCHECK(0 <= index && index < CallDescriptors::NUMBER_OF_DESCRIPTORS); |
2935 return &call_descriptor_data_[index]; | 2943 return &call_descriptor_data_[index]; |
2936 } | 2944 } |
(...skipping 520 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3457 // Then check whether this scope intercepts. | 3465 // Then check whether this scope intercepts. |
3458 if ((flag & intercept_mask_)) { | 3466 if ((flag & intercept_mask_)) { |
3459 intercepted_flags_ |= flag; | 3467 intercepted_flags_ |= flag; |
3460 return true; | 3468 return true; |
3461 } | 3469 } |
3462 return false; | 3470 return false; |
3463 } | 3471 } |
3464 | 3472 |
3465 } // namespace internal | 3473 } // namespace internal |
3466 } // namespace v8 | 3474 } // namespace v8 |
OLD | NEW |