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

Unified Diff: src/deoptimizer.cc

Issue 2028983002: Introduce IsUndefined(Isolate*) and IsTheHole(Isolate*) (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebase master Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/debug/liveedit.cc ('k') | src/elements.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/deoptimizer.cc
diff --git a/src/deoptimizer.cc b/src/deoptimizer.cc
index b23665d9a229fbcf185b2935d4c1b47a89e56d36..9363551a425133c9805b82ca6c60a9b5dff0adcb 100644
--- a/src/deoptimizer.cc
+++ b/src/deoptimizer.cc
@@ -56,9 +56,10 @@ DeoptimizerData::~DeoptimizerData() {
Code* Deoptimizer::FindDeoptimizingCode(Address addr) {
if (function_->IsHeapObject()) {
// Search all deoptimizing code in the native context of the function.
+ Isolate* isolate = function_->GetIsolate();
Context* native_context = function_->context()->native_context();
Object* element = native_context->DeoptimizedCodeListHead();
- while (!element->IsUndefined()) {
+ while (!element->IsUndefined(isolate)) {
Code* code = Code::cast(element);
CHECK(code->kind() == Code::OPTIMIZED_FUNCTION);
if (code->contains(addr)) return code;
@@ -186,7 +187,8 @@ void Deoptimizer::VisitAllOptimizedFunctionsForContext(
// no longer refer to optimized code.
JSFunction* prev = NULL;
Object* element = context->OptimizedFunctionsListHead();
- while (!element->IsUndefined()) {
+ Isolate* isolate = context->GetIsolate();
+ while (!element->IsUndefined(isolate)) {
JSFunction* function = JSFunction::cast(element);
Object* next = function->next_function_link();
if (function->code()->kind() != Code::OPTIMIZED_FUNCTION ||
@@ -226,7 +228,7 @@ void Deoptimizer::VisitAllOptimizedFunctions(
// Run through the list of all native contexts.
Object* context = isolate->heap()->native_contexts_list();
- while (!context->IsUndefined()) {
+ while (!context->IsUndefined(isolate)) {
VisitAllOptimizedFunctionsForContext(Context::cast(context), visitor);
context = Context::cast(context)->next_context_link();
}
@@ -315,7 +317,7 @@ void Deoptimizer::DeoptimizeMarkedCodeForContext(Context* context) {
// Walk over all optimized code objects in this native context.
Code* prev = NULL;
Object* element = context->OptimizedCodeListHead();
- while (!element->IsUndefined()) {
+ while (!element->IsUndefined(isolate)) {
Code* code = Code::cast(element);
CHECK_EQ(code->kind(), Code::OPTIMIZED_FUNCTION);
Object* next = code->next_code_link();
@@ -385,7 +387,7 @@ void Deoptimizer::DeoptimizeAll(Isolate* isolate) {
DisallowHeapAllocation no_allocation;
// For all contexts, mark all code, then deoptimize.
Object* context = isolate->heap()->native_contexts_list();
- while (!context->IsUndefined()) {
+ while (!context->IsUndefined(isolate)) {
Context* native_context = Context::cast(context);
MarkAllCodeForContext(native_context);
DeoptimizeMarkedCodeForContext(native_context);
@@ -406,7 +408,7 @@ void Deoptimizer::DeoptimizeMarkedCode(Isolate* isolate) {
DisallowHeapAllocation no_allocation;
// For all contexts, deoptimize code already marked.
Object* context = isolate->heap()->native_contexts_list();
- while (!context->IsUndefined()) {
+ while (!context->IsUndefined(isolate)) {
Context* native_context = Context::cast(context);
DeoptimizeMarkedCodeForContext(native_context);
context = native_context->next_context_link();
@@ -416,7 +418,8 @@ void Deoptimizer::DeoptimizeMarkedCode(Isolate* isolate) {
void Deoptimizer::MarkAllCodeForContext(Context* context) {
Object* element = context->OptimizedCodeListHead();
- while (!element->IsUndefined()) {
+ Isolate* isolate = context->GetIsolate();
+ while (!element->IsUndefined(isolate)) {
Code* code = Code::cast(element);
CHECK_EQ(code->kind(), Code::OPTIMIZED_FUNCTION);
code->set_marked_for_deoptimization(true);
@@ -660,10 +663,10 @@ int Deoptimizer::GetDeoptimizedCodeCount(Isolate* isolate) {
int length = 0;
// Count all entries in the deoptimizing code list of every context.
Object* context = isolate->heap()->native_contexts_list();
- while (!context->IsUndefined()) {
+ while (!context->IsUndefined(isolate)) {
Context* native_context = Context::cast(context);
Object* element = native_context->DeoptimizedCodeListHead();
- while (!element->IsUndefined()) {
+ while (!element->IsUndefined(isolate)) {
Code* code = Code::cast(element);
DCHECK(code->kind() == Code::OPTIMIZED_FUNCTION);
length++;
@@ -989,7 +992,7 @@ void Deoptimizer::DoComputeJSFrame(TranslatedFrame* translated_frame,
}
// Read the context from the translations.
Object* context = context_pos->GetRawValue();
- if (context == isolate_->heap()->undefined_value()) {
+ if (context->IsUndefined(isolate_)) {
// If the context was optimized away, just use the context from
// the activation. This should only apply to Crankshaft code.
CHECK(!compiled_code_->is_turbofanned());
@@ -3789,7 +3792,7 @@ Handle<Object> TranslatedState::MaterializeAt(int frame_index,
object->set_context(Context::cast(*context));
object->set_literals(LiteralsArray::cast(*literals));
CHECK(entry->IsNumber()); // Entry to compile lazy stub.
- CHECK(next_link->IsUndefined());
+ CHECK(next_link->IsUndefined(isolate_));
return object;
}
case FIXED_ARRAY_TYPE: {
« no previous file with comments | « src/debug/liveedit.cc ('k') | src/elements.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698