Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(665)

Side by Side Diff: src/objects.cc

Issue 1212253009: Debugger: clear ICs on activating step-in to correctly flood accessor pairs. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/debug.cc ('k') | src/runtime/runtime-classes.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 422 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 // behavior the same between hardware and simulators. 433 // behavior the same between hardware and simulators.
434 StackLimitCheck check(isolate); 434 StackLimitCheck check(isolate);
435 if (check.JsHasOverflowed()) { 435 if (check.JsHasOverflowed()) {
436 isolate->StackOverflow(); 436 isolate->StackOverflow();
437 return MaybeHandle<Object>(); 437 return MaybeHandle<Object>();
438 } 438 }
439 439
440 Debug* debug = isolate->debug(); 440 Debug* debug = isolate->debug();
441 // Handle stepping into a getter if step into is active. 441 // Handle stepping into a getter if step into is active.
442 // TODO(rossberg): should this apply to getters that are function proxies? 442 // TODO(rossberg): should this apply to getters that are function proxies?
443 if (debug->is_active()) { 443 if (debug->is_active()) debug->HandleStepIn(getter, false);
444 debug->HandleStepIn(getter, Handle<Object>::null(), 0, false);
445 }
446 444
447 return Execution::Call(isolate, getter, receiver, 0, NULL, true); 445 return Execution::Call(isolate, getter, receiver, 0, NULL, true);
448 } 446 }
449 447
450 448
451 MaybeHandle<Object> Object::SetPropertyWithDefinedSetter( 449 MaybeHandle<Object> Object::SetPropertyWithDefinedSetter(
452 Handle<Object> receiver, 450 Handle<Object> receiver,
453 Handle<JSReceiver> setter, 451 Handle<JSReceiver> setter,
454 Handle<Object> value) { 452 Handle<Object> value) {
455 Isolate* isolate = setter->GetIsolate(); 453 Isolate* isolate = setter->GetIsolate();
456 454
457 Debug* debug = isolate->debug(); 455 Debug* debug = isolate->debug();
458 // Handle stepping into a setter if step into is active. 456 // Handle stepping into a setter if step into is active.
459 // TODO(rossberg): should this apply to getters that are function proxies? 457 // TODO(rossberg): should this apply to getters that are function proxies?
460 if (debug->is_active()) { 458 if (debug->is_active()) debug->HandleStepIn(setter, false);
461 debug->HandleStepIn(setter, Handle<Object>::null(), 0, false);
462 }
463 459
464 Handle<Object> argv[] = { value }; 460 Handle<Object> argv[] = { value };
465 RETURN_ON_EXCEPTION(isolate, Execution::Call(isolate, setter, receiver, 461 RETURN_ON_EXCEPTION(isolate, Execution::Call(isolate, setter, receiver,
466 arraysize(argv), argv, true), 462 arraysize(argv), argv, true),
467 Object); 463 Object);
468 return value; 464 return value;
469 } 465 }
470 466
471 467
472 static bool FindAllCanReadHolder(LookupIterator* it) { 468 static bool FindAllCanReadHolder(LookupIterator* it) {
(...skipping 15658 matching lines...) Expand 10 before | Expand all | Expand 10 after
16131 Handle<Object> new_value) { 16127 Handle<Object> new_value) {
16132 if (cell->value() != *new_value) { 16128 if (cell->value() != *new_value) {
16133 cell->set_value(*new_value); 16129 cell->set_value(*new_value);
16134 Isolate* isolate = cell->GetIsolate(); 16130 Isolate* isolate = cell->GetIsolate();
16135 cell->dependent_code()->DeoptimizeDependentCodeGroup( 16131 cell->dependent_code()->DeoptimizeDependentCodeGroup(
16136 isolate, DependentCode::kPropertyCellChangedGroup); 16132 isolate, DependentCode::kPropertyCellChangedGroup);
16137 } 16133 }
16138 } 16134 }
16139 } // namespace internal 16135 } // namespace internal
16140 } // namespace v8 16136 } // namespace v8
OLDNEW
« no previous file with comments | « src/debug.cc ('k') | src/runtime/runtime-classes.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698