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

Side by Side Diff: src/objects.cc

Issue 1590273002: [runtime] No need to carry around the creation context for JSBoundFunctions. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix debug. Created 4 years, 11 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/objects.h ('k') | src/objects-debug.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 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 <sstream> 9 #include <sstream>
10 10
(...skipping 2553 matching lines...) Expand 10 before | Expand all | Expand 10 after
2564 if (name->length() > 0) result = handle(name, isolate); 2564 if (name->length() > 0) result = handle(name, isolate);
2565 } 2565 }
2566 2566
2567 return result.is_identical_to(isolate->factory()->Object_string()) 2567 return result.is_identical_to(isolate->factory()->Object_string())
2568 ? handle(receiver->class_name()) 2568 ? handle(receiver->class_name())
2569 : result; 2569 : result;
2570 } 2570 }
2571 2571
2572 2572
2573 Context* JSReceiver::GetCreationContext() { 2573 Context* JSReceiver::GetCreationContext() {
2574 if (IsJSBoundFunction()) { 2574 JSReceiver* receiver = this;
2575 return JSBoundFunction::cast(this)->creation_context(); 2575 while (receiver->IsJSBoundFunction()) {
2576 receiver = JSBoundFunction::cast(receiver)->bound_target_function();
2576 } 2577 }
2577 Object* constructor = map()->GetConstructor(); 2578 Object* constructor = receiver->map()->GetConstructor();
2578 JSFunction* function; 2579 JSFunction* function;
2579 if (constructor->IsJSFunction()) { 2580 if (constructor->IsJSFunction()) {
2580 function = JSFunction::cast(constructor); 2581 function = JSFunction::cast(constructor);
2581 } else { 2582 } else {
2582 // Functions have null as a constructor, 2583 // Functions have null as a constructor,
2583 // but any JSFunction knows its context immediately. 2584 // but any JSFunction knows its context immediately.
2584 CHECK(IsJSFunction()); 2585 CHECK(receiver->IsJSFunction());
2585 function = JSFunction::cast(this); 2586 function = JSFunction::cast(receiver);
2586 } 2587 }
2587 2588
2588 return function->context()->native_context(); 2589 return function->context()->native_context();
2589 } 2590 }
2590 2591
2591 2592
2592 static Handle<Object> WrapType(Handle<HeapType> type) { 2593 static Handle<Object> WrapType(Handle<HeapType> type) {
2593 if (type->IsClass()) return Map::WeakCellForMap(type->AsClass()->Map()); 2594 if (type->IsClass()) return Map::WeakCellForMap(type->AsClass()->Map());
2594 return type; 2595 return type;
2595 } 2596 }
(...skipping 17094 matching lines...) Expand 10 before | Expand all | Expand 10 after
19690 if (cell->value() != *new_value) { 19691 if (cell->value() != *new_value) {
19691 cell->set_value(*new_value); 19692 cell->set_value(*new_value);
19692 Isolate* isolate = cell->GetIsolate(); 19693 Isolate* isolate = cell->GetIsolate();
19693 cell->dependent_code()->DeoptimizeDependentCodeGroup( 19694 cell->dependent_code()->DeoptimizeDependentCodeGroup(
19694 isolate, DependentCode::kPropertyCellChangedGroup); 19695 isolate, DependentCode::kPropertyCellChangedGroup);
19695 } 19696 }
19696 } 19697 }
19697 19698
19698 } // namespace internal 19699 } // namespace internal
19699 } // namespace v8 19700 } // namespace v8
OLDNEW
« no previous file with comments | « src/objects.h ('k') | src/objects-debug.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698