Skip to content

Commit ffa835e

Browse files
Matheus MarchiniMylesBorins
Matheus Marchini
authored andcommitted
deps: cherry-pick acc336c from upstream V8
Original commit message: [log] fix boolean logic on LogCodeObject [email protected] Change-Id: Icb4825344991e5b2d15050e037064c60eeb9617e Reviewed-on: https://chromium-review.googlesource.com/1097578 Reviewed-by: Benedikt Meurer <[email protected]> Reviewed-by: Yang Guo <[email protected]> Commit-Queue: Benedikt Meurer <[email protected]> Cr-Commit-Position: refs/heads/master@{#53777} Refs: v8/v8@acc336c Backport-PR-URL: #21668 PR-URL: #21126 Refs: v8/v8@aa6ce3e Reviewed-By: Michaël Zasso <[email protected]> Reviewed-By: Michael Dawson <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent 5b6c401 commit ffa835e

File tree

3 files changed

+56
-32
lines changed

3 files changed

+56
-32
lines changed

common.gypi

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
# Reset this number to 0 on major V8 upgrades.
3131
# Increment by one for each non-official patch applied to deps/v8.
32-
'v8_embedder_string': '-node.4',
32+
'v8_embedder_string': '-node.5',
3333

3434
# Enable disassembler for `--print-code` v8 options
3535
'v8_enable_disassembler': 1,

deps/v8/src/log.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -2033,7 +2033,7 @@ void ExistingCodeLogger::LogCodeObject(Object* object) {
20332033
break;
20342034
case AbstractCode::BUILTIN:
20352035
if (Code::cast(object)->is_interpreter_trampoline_builtin() &&
2036-
Code::cast(object) ==
2036+
Code::cast(object) !=
20372037
*BUILTIN_CODE(isolate_, InterpreterEntryTrampoline)) {
20382038
return;
20392039
}

deps/v8/test/cctest/test-log.cc

+54-30
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@
3636

3737
#include <unordered_set>
3838
#include <vector>
39+
// The C++ style guide recommends using <re2> instead of <regex>. However, the
40+
// former isn't available in V8.
41+
#include <regex> // NOLINT(build/c++11)
3942
#include "src/api.h"
4043
#include "src/log-utils.h"
4144
#include "src/log.h"
@@ -257,30 +260,41 @@ class TestCodeEventHandler : public v8::CodeEventHandler {
257260
explicit TestCodeEventHandler(v8::Isolate* isolate)
258261
: v8::CodeEventHandler(isolate) {}
259262

260-
const char* FindLine(const char* prefix, const char* suffix = nullptr,
261-
const char* start = nullptr) {
262-
if (!log_.length()) return NULL;
263-
const char* c_log = log_.c_str();
264-
if (start == nullptr) start = c_log;
265-
const char* end = c_log + log_.length();
266-
return FindLogLine(start, end, prefix, suffix);
263+
size_t CountLines(std::string prefix, std::string suffix = std::string()) {
264+
if (!log_.length()) return 0;
265+
266+
std::regex expression("(^|\\n)" + prefix + ".*" + suffix + "(?=\\n|$)");
267+
268+
size_t match_count(std::distance(
269+
std::sregex_iterator(log_.begin(), log_.end(), expression),
270+
std::sregex_iterator()));
271+
272+
return match_count;
267273
}
268274

269275
void Handle(v8::CodeEvent* code_event) override {
270-
const char* code_type =
271-
v8::CodeEvent::GetCodeEventTypeName(code_event->GetCodeType());
272-
char function_name[1000];
273-
strncpy(function_name, code_type, 1000);
274-
function_name[strlen(code_type)] = ' ';
275-
code_event->GetFunctionName()->WriteUtf8(
276-
function_name + strlen(code_type) + 1, 1000);
277-
function_name[strlen(function_name) + 1] = '\0';
278-
function_name[strlen(function_name)] = '\n';
279-
280-
log_ += std::string(function_name);
276+
std::string log_line = "";
277+
log_line += v8::CodeEvent::GetCodeEventTypeName(code_event->GetCodeType());
278+
log_line += " ";
279+
log_line += FormatName(code_event);
280+
log_line += "\n";
281+
log_ += log_line;
281282
}
282283

283284
private:
285+
std::string FormatName(v8::CodeEvent* code_event) {
286+
std::string name = std::string(code_event->GetComment());
287+
if (name.empty()) {
288+
v8::Local<v8::String> functionName = code_event->GetFunctionName();
289+
std::string buffer(functionName->Utf8Length() + 1, 0);
290+
functionName->WriteUtf8(&buffer[0], functionName->Utf8Length() + 1);
291+
// Sanitize name, removing unwanted \0 resulted from WriteUtf8
292+
name = std::string(buffer.c_str());
293+
}
294+
295+
return name;
296+
}
297+
284298
std::string log_;
285299
};
286300

@@ -854,21 +868,24 @@ TEST(ExternalCodeEventListener) {
854868
"testCodeEventListenerBeforeStart('1', 1);";
855869
CompileRun(source_text_before_start);
856870

857-
CHECK_NULL(code_event_handler.FindLine("LazyCompile",
858-
"testCodeEventListenerBeforeStart"));
871+
CHECK_EQ(code_event_handler.CountLines("LazyCompile",
872+
"testCodeEventListenerBeforeStart"),
873+
0);
859874

860875
code_event_handler.Enable();
861876

862-
CHECK_NOT_NULL(code_event_handler.FindLine(
863-
"LazyCompile", "testCodeEventListenerBeforeStart"));
877+
CHECK_GE(code_event_handler.CountLines("LazyCompile",
878+
"testCodeEventListenerBeforeStart"),
879+
1);
864880

865881
const char* source_text_after_start =
866882
"function testCodeEventListenerAfterStart(a,b) { return a + b };"
867883
"testCodeEventListenerAfterStart('1', 1);";
868884
CompileRun(source_text_after_start);
869885

870-
CHECK_NOT_NULL(code_event_handler.FindLine(
871-
"LazyCompile", "testCodeEventListenerAfterStart"));
886+
CHECK_GE(code_event_handler.CountLines("LazyCompile",
887+
"testCodeEventListenerAfterStart"),
888+
1);
872889

873890
context->Exit();
874891
}
@@ -897,21 +914,28 @@ TEST(ExternalCodeEventListenerWithInterpretedFramesNativeStack) {
897914
"testCodeEventListenerBeforeStart('1', 1);";
898915
CompileRun(source_text_before_start);
899916

900-
CHECK_NULL(code_event_handler.FindLine("InterpretedFunction",
901-
"testCodeEventListenerBeforeStart"));
917+
CHECK_EQ(code_event_handler.CountLines("InterpretedFunction",
918+
"testCodeEventListenerBeforeStart"),
919+
0);
902920

903921
code_event_handler.Enable();
904922

905-
CHECK_NOT_NULL(code_event_handler.FindLine(
906-
"InterpretedFunction", "testCodeEventListenerBeforeStart"));
923+
CHECK_GE(code_event_handler.CountLines("InterpretedFunction",
924+
"testCodeEventListenerBeforeStart"),
925+
1);
907926

908927
const char* source_text_after_start =
909928
"function testCodeEventListenerAfterStart(a,b) { return a + b };"
910929
"testCodeEventListenerAfterStart('1', 1);";
911930
CompileRun(source_text_after_start);
912931

913-
CHECK_NOT_NULL(code_event_handler.FindLine(
914-
"InterpretedFunction", "testCodeEventListenerAfterStart"));
932+
CHECK_GE(code_event_handler.CountLines("InterpretedFunction",
933+
"testCodeEventListenerAfterStart"),
934+
1);
935+
936+
CHECK_EQ(
937+
code_event_handler.CountLines("Builtin", "InterpreterEntryTrampoline"),
938+
1);
915939

916940
context->Exit();
917941
}

0 commit comments

Comments
 (0)