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

Side by Side Diff: src/log.cc

Issue 1207433002: Assertion failure when using --log-regexp (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Addressed comments 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/log.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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/log.h" 5 #include "src/log.h"
6 6
7 #include <cstdarg> 7 #include <cstdarg>
8 #include <sstream> 8 #include <sstream>
9 9
10 #include "src/v8.h" 10 #include "src/v8.h"
(...skipping 935 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 946
947 947
948 // Instantiate template methods. 948 // Instantiate template methods.
949 #define V(TimerName, expose) \ 949 #define V(TimerName, expose) \
950 template void TimerEventScope<TimerEvent##TimerName>::LogTimerEvent( \ 950 template void TimerEventScope<TimerEvent##TimerName>::LogTimerEvent( \
951 Logger::StartEnd se); 951 Logger::StartEnd se);
952 TIMER_EVENTS_LIST(V) 952 TIMER_EVENTS_LIST(V)
953 #undef V 953 #undef V
954 954
955 955
956 void Logger::LogRegExpSource(Handle<JSRegExp> regexp) { 956 namespace {
957 // Emits the source code of a regexp. Used by regexp events.
958 void LogRegExpSource(Handle<JSRegExp> regexp, Isolate* isolate,
959 Log::MessageBuilder* msg) {
957 // Prints "/" + re.source + "/" + 960 // Prints "/" + re.source + "/" +
958 // (re.global?"g":"") + (re.ignorecase?"i":"") + (re.multiline?"m":"") 961 // (re.global?"g":"") + (re.ignorecase?"i":"") + (re.multiline?"m":"")
959 Log::MessageBuilder msg(log_);
960 962
961 Handle<Object> source = Object::GetProperty( 963 Handle<Object> source =
962 isolate_, regexp, "source").ToHandleChecked(); 964 Object::GetProperty(isolate, regexp, "source").ToHandleChecked();
963 if (!source->IsString()) { 965 if (!source->IsString()) {
964 msg.Append("no source"); 966 msg->Append("no source");
965 return; 967 return;
966 } 968 }
967 969
968 switch (regexp->TypeTag()) { 970 switch (regexp->TypeTag()) {
969 case JSRegExp::ATOM: 971 case JSRegExp::ATOM:
970 msg.Append('a'); 972 msg->Append('a');
971 break; 973 break;
972 default: 974 default:
973 break; 975 break;
974 } 976 }
975 msg.Append('/'); 977 msg->Append('/');
976 msg.AppendDetailed(*Handle<String>::cast(source), false); 978 msg->AppendDetailed(*Handle<String>::cast(source), false);
977 msg.Append('/'); 979 msg->Append('/');
978 980
979 // global flag 981 // global flag
980 Handle<Object> global = Object::GetProperty( 982 Handle<Object> global =
981 isolate_, regexp, "global").ToHandleChecked(); 983 Object::GetProperty(isolate, regexp, "global").ToHandleChecked();
982 if (global->IsTrue()) { 984 if (global->IsTrue()) {
983 msg.Append('g'); 985 msg->Append('g');
984 } 986 }
985 // ignorecase flag 987 // ignorecase flag
986 Handle<Object> ignorecase = Object::GetProperty( 988 Handle<Object> ignorecase =
987 isolate_, regexp, "ignoreCase").ToHandleChecked(); 989 Object::GetProperty(isolate, regexp, "ignoreCase").ToHandleChecked();
988 if (ignorecase->IsTrue()) { 990 if (ignorecase->IsTrue()) {
989 msg.Append('i'); 991 msg->Append('i');
990 } 992 }
991 // multiline flag 993 // multiline flag
992 Handle<Object> multiline = Object::GetProperty( 994 Handle<Object> multiline =
993 isolate_, regexp, "multiline").ToHandleChecked(); 995 Object::GetProperty(isolate, regexp, "multiline").ToHandleChecked();
994 if (multiline->IsTrue()) { 996 if (multiline->IsTrue()) {
995 msg.Append('m'); 997 msg->Append('m');
996 } 998 }
997
998 msg.WriteToLogFile();
999 } 999 }
1000 } // namespace
1000 1001
1001 1002
1002 void Logger::RegExpCompileEvent(Handle<JSRegExp> regexp, bool in_cache) { 1003 void Logger::RegExpCompileEvent(Handle<JSRegExp> regexp, bool in_cache) {
1003 if (!log_->IsEnabled() || !FLAG_log_regexp) return; 1004 if (!log_->IsEnabled() || !FLAG_log_regexp) return;
1004 Log::MessageBuilder msg(log_); 1005 Log::MessageBuilder msg(log_);
1005 msg.Append("regexp-compile,"); 1006 msg.Append("regexp-compile,");
1006 LogRegExpSource(regexp); 1007 LogRegExpSource(regexp, isolate_, &msg);
1007 msg.Append(in_cache ? ",hit" : ",miss"); 1008 msg.Append(in_cache ? ",hit" : ",miss");
1008 msg.WriteToLogFile(); 1009 msg.WriteToLogFile();
1009 } 1010 }
1010 1011
1011 1012
1012 void Logger::ApiNamedPropertyAccess(const char* tag, 1013 void Logger::ApiNamedPropertyAccess(const char* tag,
1013 JSObject* holder, 1014 JSObject* holder,
1014 Object* name) { 1015 Object* name) {
1015 DCHECK(name->IsName()); 1016 DCHECK(name->IsName());
1016 if (!log_->IsEnabled() || !FLAG_log_api) return; 1017 if (!log_->IsEnabled() || !FLAG_log_api) return;
(...skipping 878 matching lines...) Expand 10 before | Expand all | Expand 10 after
1895 removeCodeEventListener(jit_logger_); 1896 removeCodeEventListener(jit_logger_);
1896 delete jit_logger_; 1897 delete jit_logger_;
1897 jit_logger_ = NULL; 1898 jit_logger_ = NULL;
1898 } 1899 }
1899 1900
1900 return log_->Close(); 1901 return log_->Close();
1901 } 1902 }
1902 1903
1903 } // namespace internal 1904 } // namespace internal
1904 } // namespace v8 1905 } // namespace v8
OLDNEW
« no previous file with comments | « src/log.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698