OLD | NEW |
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 #include "src/objects.h" | 5 #include "src/objects.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 #include <iomanip> | 8 #include <iomanip> |
9 #include <memory> | 9 #include <memory> |
10 #include <sstream> | 10 #include <sstream> |
(...skipping 19150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
19161 isolate, DependentCode::kPropertyCellChangedGroup); | 19161 isolate, DependentCode::kPropertyCellChangedGroup); |
19162 } | 19162 } |
19163 } | 19163 } |
19164 | 19164 |
19165 int JSGeneratorObject::source_position() const { | 19165 int JSGeneratorObject::source_position() const { |
19166 CHECK(is_suspended()); | 19166 CHECK(is_suspended()); |
19167 AbstractCode* code; | 19167 AbstractCode* code; |
19168 int code_offset; | 19168 int code_offset; |
19169 if (function()->shared()->HasBytecodeArray()) { | 19169 if (function()->shared()->HasBytecodeArray()) { |
19170 // New-style generators. | 19170 // New-style generators. |
| 19171 DCHECK(!function()->shared()->HasBaselineCode()); |
19171 code_offset = Smi::cast(input_or_debug_pos())->value(); | 19172 code_offset = Smi::cast(input_or_debug_pos())->value(); |
19172 // The stored bytecode offset is relative to a different base than what | 19173 // The stored bytecode offset is relative to a different base than what |
19173 // is used in the source position table, hence the subtraction. | 19174 // is used in the source position table, hence the subtraction. |
19174 code_offset -= BytecodeArray::kHeaderSize - kHeapObjectTag; | 19175 code_offset -= BytecodeArray::kHeaderSize - kHeapObjectTag; |
19175 code = AbstractCode::cast(function()->shared()->bytecode_array()); | 19176 code = AbstractCode::cast(function()->shared()->bytecode_array()); |
19176 } else { | 19177 } else { |
19177 // Old-style generators. | 19178 // Old-style generators. |
| 19179 DCHECK(function()->shared()->HasBaselineCode()); |
19178 code_offset = continuation(); | 19180 code_offset = continuation(); |
19179 CHECK(0 <= code_offset); | 19181 CHECK(0 <= code_offset); |
19180 CHECK(code_offset < function()->code()->instruction_size()); | 19182 CHECK(code_offset < function()->code()->instruction_size()); |
19181 code = AbstractCode::cast(function()->shared()->code()); | 19183 code = AbstractCode::cast(function()->shared()->code()); |
19182 } | 19184 } |
19183 return code->SourcePosition(code_offset); | 19185 return code->SourcePosition(code_offset); |
19184 } | 19186 } |
19185 | 19187 |
19186 // static | 19188 // static |
19187 AccessCheckInfo* AccessCheckInfo::Get(Isolate* isolate, | 19189 AccessCheckInfo* AccessCheckInfo::Get(Isolate* isolate, |
(...skipping 18 matching lines...) Expand all Loading... |
19206 for (PrototypeIterator iter(isolate, this, kStartAtReceiver, | 19208 for (PrototypeIterator iter(isolate, this, kStartAtReceiver, |
19207 PrototypeIterator::END_AT_NULL); | 19209 PrototypeIterator::END_AT_NULL); |
19208 !iter.IsAtEnd(); iter.AdvanceIgnoringProxies()) { | 19210 !iter.IsAtEnd(); iter.AdvanceIgnoringProxies()) { |
19209 if (iter.GetCurrent<Object>()->IsJSProxy()) return true; | 19211 if (iter.GetCurrent<Object>()->IsJSProxy()) return true; |
19210 } | 19212 } |
19211 return false; | 19213 return false; |
19212 } | 19214 } |
19213 | 19215 |
19214 } // namespace internal | 19216 } // namespace internal |
19215 } // namespace v8 | 19217 } // namespace v8 |
OLD | NEW |