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

Side by Side Diff: src/objects.cc

Issue 22926025: Add --trace-hydrogen-filter flag. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 4 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 | Annotate | Revision Log
« src/objects.h ('K') | « src/objects.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 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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 9014 matching lines...) Expand 10 before | Expand all | Expand 10 after
9025 9025
9026 9026
9027 void String::PrintOn(FILE* file) { 9027 void String::PrintOn(FILE* file) {
9028 int length = this->length(); 9028 int length = this->length();
9029 for (int i = 0; i < length; i++) { 9029 for (int i = 0; i < length; i++) {
9030 PrintF(file, "%c", Get(i)); 9030 PrintF(file, "%c", Get(i));
9031 } 9031 }
9032 } 9032 }
9033 9033
9034 9034
9035 bool String::PassesFilter(const char* raw_filter) {
9036 if (*raw_filter == '*') return true;
9037 Vector<const char> filter = CStrVector(raw_filter);
9038 if (filter.length() == 0) return this->length() == 0;
9039 if (filter[0] != '-' && this->IsUtf8EqualTo(filter)) return true;
9040 if (filter[0] == '-' &&
9041 !this->IsUtf8EqualTo(filter.SubVector(1, filter.length()))) {
9042 return true;
9043 }
9044 if (filter[filter.length() - 1] == '*' &&
9045 this->IsUtf8EqualTo(filter.SubVector(0, filter.length() - 1), true)) {
9046 return true;
9047 }
9048 return false;
9049 }
9050
9051
9035 static void TrimEnumCache(Heap* heap, Map* map, DescriptorArray* descriptors) { 9052 static void TrimEnumCache(Heap* heap, Map* map, DescriptorArray* descriptors) {
9036 int live_enum = map->EnumLength(); 9053 int live_enum = map->EnumLength();
9037 if (live_enum == Map::kInvalidEnumCache) { 9054 if (live_enum == Map::kInvalidEnumCache) {
9038 live_enum = map->NumberOfDescribedProperties(OWN_DESCRIPTORS, DONT_ENUM); 9055 live_enum = map->NumberOfDescribedProperties(OWN_DESCRIPTORS, DONT_ENUM);
9039 } 9056 }
9040 if (live_enum == 0) return descriptors->ClearEnumCache(); 9057 if (live_enum == 0) return descriptors->ClearEnumCache();
9041 9058
9042 FixedArray* enum_cache = descriptors->GetEnumCache(); 9059 FixedArray* enum_cache = descriptors->GetEnumCache();
9043 9060
9044 int to_trim = enum_cache->length() - live_enum; 9061 int to_trim = enum_cache->length() - live_enum;
(...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after
9614 PrintF(out, "%s", *name); 9631 PrintF(out, "%s", *name);
9615 } 9632 }
9616 9633
9617 9634
9618 Context* JSFunction::NativeContextFromLiterals(FixedArray* literals) { 9635 Context* JSFunction::NativeContextFromLiterals(FixedArray* literals) {
9619 return Context::cast(literals->get(JSFunction::kLiteralNativeContextIndex)); 9636 return Context::cast(literals->get(JSFunction::kLiteralNativeContextIndex));
9620 } 9637 }
9621 9638
9622 9639
9623 bool JSFunction::PassesHydrogenFilter() { 9640 bool JSFunction::PassesHydrogenFilter() {
9624 String* name = shared()->DebugName(); 9641 return shared()->DebugName()->PassesFilter(FLAG_hydrogen_filter);
9625 // The filter string is a pattern that matches functions in this way:
9626 // "*" all; the default
9627 // "-" all but the top-level function
9628 // "-name" all but the function "name"
9629 // "" only the top-level function
9630 // "name" only the function "name"
9631 // "name*" only functions starting with "name"
9632 if (*FLAG_hydrogen_filter != '*') {
9633 Vector<const char> filter = CStrVector(FLAG_hydrogen_filter);
9634 if (filter.length() == 0) return name->length() == 0;
9635 if (filter[0] != '-' && name->IsUtf8EqualTo(filter)) return true;
9636 if (filter[0] == '-' &&
9637 !name->IsUtf8EqualTo(filter.SubVector(1, filter.length()))) {
9638 return true;
9639 }
9640 if (filter[filter.length() - 1] == '*' &&
9641 name->IsUtf8EqualTo(filter.SubVector(0, filter.length() - 1), true)) {
9642 return true;
9643 }
9644 return false;
9645 }
9646
9647 return true;
9648 } 9642 }
9649 9643
9650 9644
9651 MaybeObject* Oddball::Initialize(const char* to_string, 9645 MaybeObject* Oddball::Initialize(const char* to_string,
9652 Object* to_number, 9646 Object* to_number,
9653 byte kind) { 9647 byte kind) {
9654 String* internalized_to_string; 9648 String* internalized_to_string;
9655 { MaybeObject* maybe_string = 9649 { MaybeObject* maybe_string =
9656 Isolate::Current()->heap()->InternalizeUtf8String( 9650 Isolate::Current()->heap()->InternalizeUtf8String(
9657 CStrVector(to_string)); 9651 CStrVector(to_string));
(...skipping 6294 matching lines...) Expand 10 before | Expand all | Expand 10 after
15952 #define ERROR_MESSAGES_TEXTS(C, T) T, 15946 #define ERROR_MESSAGES_TEXTS(C, T) T,
15953 static const char* error_messages_[] = { 15947 static const char* error_messages_[] = {
15954 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS) 15948 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS)
15955 }; 15949 };
15956 #undef ERROR_MESSAGES_TEXTS 15950 #undef ERROR_MESSAGES_TEXTS
15957 return error_messages_[reason]; 15951 return error_messages_[reason];
15958 } 15952 }
15959 15953
15960 15954
15961 } } // namespace v8::internal 15955 } } // namespace v8::internal
OLDNEW
« src/objects.h ('K') | « src/objects.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698