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

Side by Side Diff: test/cctest/test-debug.cc

Issue 2758483002: [debugger] tuned StepNext and StepOut at return position (Closed)
Patch Set: addressed comments Created 3 years, 9 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 6661 matching lines...) Expand 10 before | Expand all | Expand 10 after
6672 if (builtin->is_promise_rejection() || builtin->is_exception_caught()) 6672 if (builtin->is_promise_rejection() || builtin->is_exception_caught())
6673 continue; 6673 continue;
6674 6674
6675 if (whitelist.find(i) != whitelist.end()) continue; 6675 if (whitelist.find(i) != whitelist.end()) continue;
6676 6676
6677 fail = true; 6677 fail = true;
6678 i::PrintF("%s is missing exception predictions.\n", builtins->name(i)); 6678 i::PrintF("%s is missing exception predictions.\n", builtins->name(i));
6679 } 6679 }
6680 CHECK(!fail); 6680 CHECK(!fail);
6681 } 6681 }
6682
6683 TEST(DebugGetPossibleBreakpointsReturnLocations) {
6684 LocalContext env;
6685 v8::Isolate* isolate = env->GetIsolate();
6686 v8::HandleScope scope(isolate);
6687 v8::Local<v8::String> source = v8_str(
6688 "function fib(x) {\n"
6689 " if (x < 0) return;\n"
6690 " if (x === 0) return 1;\n"
6691 " if (x === 1) return fib(0);\n"
6692 " return x > 2 ? fib(x - 1) + fib(x - 2) : fib(1) + fib(0);\n"
6693 "}");
6694 CompileRun(source);
6695 v8::PersistentValueVector<v8::debug::Script> scripts(isolate);
6696 v8::debug::GetLoadedScripts(isolate, scripts);
6697 CHECK(scripts.Size() == 1);
6698 std::vector<v8::debug::BreakLocation> locations;
6699 CHECK(scripts.Get(0)->GetPossibleBreakpoints(
6700 v8::debug::Location(0, 17), v8::debug::Location(), true, &locations));
6701 int returns_count = 0;
6702 for (size_t i = 0; i < locations.size(); ++i) {
6703 if (locations[i].type() == v8::debug::kReturnBreakLocation) {
6704 ++returns_count;
6705 }
6706 }
6707 if (i::FLAG_turbo) {
6708 // With turbofan we generate one return location per return statement,
6709 // each has line = 5, column = 0 as statement position.
6710 CHECK(returns_count == 4);
6711 } else {
6712 // Without turbofan we generate one return location.
6713 CHECK(returns_count == 1);
6714 }
6715 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698