| 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 <iomanip> | 5 #include <iomanip> |
| 6 #include <sstream> | 6 #include <sstream> |
| 7 | 7 |
| 8 #include "src/v8.h" | 8 #include "src/v8.h" |
| 9 | 9 |
| 10 #include "src/accessors.h" | 10 #include "src/accessors.h" |
| (...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 399 | 399 |
| 400 UNREACHABLE(); | 400 UNREACHABLE(); |
| 401 return MaybeHandle<Object>(); | 401 return MaybeHandle<Object>(); |
| 402 } | 402 } |
| 403 | 403 |
| 404 | 404 |
| 405 MaybeHandle<Object> Object::GetPropertyWithDefinedGetter( | 405 MaybeHandle<Object> Object::GetPropertyWithDefinedGetter( |
| 406 Handle<Object> receiver, | 406 Handle<Object> receiver, |
| 407 Handle<JSReceiver> getter) { | 407 Handle<JSReceiver> getter) { |
| 408 Isolate* isolate = getter->GetIsolate(); | 408 Isolate* isolate = getter->GetIsolate(); |
| 409 |
| 410 // Platforms with simulators like arm/arm64 expose a funny issue. If the |
| 411 // simulator has a separate JS stack pointer from the C++ stack pointer, it |
| 412 // can miss C++ stack overflows in the stack guard at the start of JavaScript |
| 413 // functions. It would be very expensive to check the C++ stack pointer at |
| 414 // that location. The best solution seems to be to break the impasse by |
| 415 // adding checks at possible recursion points. What's more, we don't put |
| 416 // this stack check behind the USE_SIMULATOR define in order to keep |
| 417 // behavior the same between hardware and simulators. |
| 418 StackLimitCheck check(isolate); |
| 419 if (check.JsHasOverflowed()) { |
| 420 isolate->StackOverflow(); |
| 421 return MaybeHandle<Object>(); |
| 422 } |
| 423 |
| 409 Debug* debug = isolate->debug(); | 424 Debug* debug = isolate->debug(); |
| 410 // Handle stepping into a getter if step into is active. | 425 // Handle stepping into a getter if step into is active. |
| 411 // TODO(rossberg): should this apply to getters that are function proxies? | 426 // TODO(rossberg): should this apply to getters that are function proxies? |
| 412 if (debug->is_active()) { | 427 if (debug->is_active()) { |
| 413 debug->HandleStepIn(getter, Handle<Object>::null(), 0, false); | 428 debug->HandleStepIn(getter, Handle<Object>::null(), 0, false); |
| 414 } | 429 } |
| 415 | 430 |
| 416 return Execution::Call(isolate, getter, receiver, 0, NULL, true); | 431 return Execution::Call(isolate, getter, receiver, 0, NULL, true); |
| 417 } | 432 } |
| 418 | 433 |
| (...skipping 16751 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 17170 CompilationInfo* info) { | 17185 CompilationInfo* info) { |
| 17171 Handle<DependentCode> codes = DependentCode::InsertCompilationInfo( | 17186 Handle<DependentCode> codes = DependentCode::InsertCompilationInfo( |
| 17172 handle(cell->dependent_code(), info->isolate()), | 17187 handle(cell->dependent_code(), info->isolate()), |
| 17173 DependentCode::kPropertyCellChangedGroup, info->object_wrapper()); | 17188 DependentCode::kPropertyCellChangedGroup, info->object_wrapper()); |
| 17174 if (*codes != cell->dependent_code()) cell->set_dependent_code(*codes); | 17189 if (*codes != cell->dependent_code()) cell->set_dependent_code(*codes); |
| 17175 info->dependencies(DependentCode::kPropertyCellChangedGroup)->Add( | 17190 info->dependencies(DependentCode::kPropertyCellChangedGroup)->Add( |
| 17176 cell, info->zone()); | 17191 cell, info->zone()); |
| 17177 } | 17192 } |
| 17178 | 17193 |
| 17179 } } // namespace v8::internal | 17194 } } // namespace v8::internal |
| OLD | NEW |