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

Side by Side Diff: src/objects.cc

Issue 1389353002: [interpreter] Make --ignition-filter script filtering explicit. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Small reordering. Created 5 years, 2 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/objects.h ('k') | test/test262/testcfg.py » ('j') | 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 // 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/objects.h" 5 #include "src/objects.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 #include <iomanip> 8 #include <iomanip>
9 #include <sstream> 9 #include <sstream>
10 10
(...skipping 1534 matching lines...) Expand 10 before | Expand all | Expand 10 after
1545 1545
1546 void String::PrintUC16(std::ostream& os, int start, int end) { // NOLINT 1546 void String::PrintUC16(std::ostream& os, int start, int end) { // NOLINT
1547 if (end < 0) end = length(); 1547 if (end < 0) end = length();
1548 StringCharacterStream stream(this, start); 1548 StringCharacterStream stream(this, start);
1549 for (int i = start; i < end && stream.HasMore(); i++) { 1549 for (int i = start; i < end && stream.HasMore(); i++) {
1550 os << AsUC16(stream.GetNext()); 1550 os << AsUC16(stream.GetNext());
1551 } 1551 }
1552 } 1552 }
1553 1553
1554 1554
1555 // The filter is a pattern that matches string names in this way:
1556 // "*" all; the default
1557 // "-name" all but "name"
1558 // "name" only the function "name"
1559 // "name*" only functions starting with "name"
1560 // "~" none; the tilde is not an identifier
1561 bool String::PassesFilter(const char* raw_filter) {
1562 if (*raw_filter == '*') return true;
1563
1564 Vector<const char> filter = CStrVector(raw_filter);
1565 if (filter.length() == 0) return length() == 0;
1566 if (filter[0] == '-') {
1567 // Negative filter.
1568 if (filter.length() == 1) {
1569 return (length() != 0);
1570 } else if (IsUtf8EqualTo(filter.SubVector(1, filter.length()))) {
1571 return false;
1572 }
1573 if (filter[filter.length() - 1] == '*' &&
1574 IsUtf8EqualTo(filter.SubVector(1, filter.length() - 1), true)) {
1575 return false;
1576 }
1577 return true;
1578
1579 } else if (IsUtf8EqualTo(filter)) {
1580 return true;
1581 }
1582 if (filter[filter.length() - 1] == '*' &&
1583 IsUtf8EqualTo(filter.SubVector(0, filter.length() - 1), true)) {
1584 return true;
1585 }
1586 return false;
1587 }
1588
1589
1590 void JSObject::JSObjectShortPrint(StringStream* accumulator) { 1555 void JSObject::JSObjectShortPrint(StringStream* accumulator) {
1591 switch (map()->instance_type()) { 1556 switch (map()->instance_type()) {
1592 case JS_ARRAY_TYPE: { 1557 case JS_ARRAY_TYPE: {
1593 double length = JSArray::cast(this)->length()->IsUndefined() 1558 double length = JSArray::cast(this)->length()->IsUndefined()
1594 ? 0 1559 ? 0
1595 : JSArray::cast(this)->length()->Number(); 1560 : JSArray::cast(this)->length()->Number();
1596 accumulator->Add("<JS Array[%u]>", static_cast<uint32_t>(length)); 1561 accumulator->Add("<JS Array[%u]>", static_cast<uint32_t>(length));
1597 break; 1562 break;
1598 } 1563 }
1599 case JS_WEAK_MAP_TYPE: { 1564 case JS_WEAK_MAP_TYPE: {
(...skipping 9400 matching lines...) Expand 10 before | Expand all | Expand 10 after
11000 10965
11001 // The filter is a pattern that matches function names in this way: 10966 // The filter is a pattern that matches function names in this way:
11002 // "*" all; the default 10967 // "*" all; the default
11003 // "-" all but the top-level function 10968 // "-" all but the top-level function
11004 // "-name" all but the function "name" 10969 // "-name" all but the function "name"
11005 // "" only the top-level function 10970 // "" only the top-level function
11006 // "name" only the function "name" 10971 // "name" only the function "name"
11007 // "name*" only functions starting with "name" 10972 // "name*" only functions starting with "name"
11008 // "~" none; the tilde is not an identifier 10973 // "~" none; the tilde is not an identifier
11009 bool JSFunction::PassesFilter(const char* raw_filter) { 10974 bool JSFunction::PassesFilter(const char* raw_filter) {
10975 if (*raw_filter == '*') return true;
11010 String* name = shared()->DebugName(); 10976 String* name = shared()->DebugName();
11011 return name->PassesFilter(raw_filter); 10977 Vector<const char> filter = CStrVector(raw_filter);
10978 if (filter.length() == 0) return name->length() == 0;
10979 if (filter[0] == '-') {
10980 // Negative filter.
10981 if (filter.length() == 1) {
10982 return (name->length() != 0);
10983 } else if (name->IsUtf8EqualTo(filter.SubVector(1, filter.length()))) {
10984 return false;
10985 }
10986 if (filter[filter.length() - 1] == '*' &&
10987 name->IsUtf8EqualTo(filter.SubVector(1, filter.length() - 1), true)) {
10988 return false;
10989 }
10990 return true;
10991
10992 } else if (name->IsUtf8EqualTo(filter)) {
10993 return true;
10994 }
10995 if (filter[filter.length() - 1] == '*' &&
10996 name->IsUtf8EqualTo(filter.SubVector(0, filter.length() - 1), true)) {
10997 return true;
10998 }
10999 return false;
11012 } 11000 }
11013 11001
11014 11002
11015 Handle<String> JSFunction::GetDebugName(Handle<JSFunction> function) { 11003 Handle<String> JSFunction::GetDebugName(Handle<JSFunction> function) {
11016 Isolate* isolate = function->GetIsolate(); 11004 Isolate* isolate = function->GetIsolate();
11017 Handle<Object> name = 11005 Handle<Object> name =
11018 JSReceiver::GetDataProperty(function, isolate->factory()->name_string()); 11006 JSReceiver::GetDataProperty(function, isolate->factory()->name_string());
11019 if (name->IsString()) return Handle<String>::cast(name); 11007 if (name->IsString()) return Handle<String>::cast(name);
11020 return handle(function->shared()->DebugName(), isolate); 11008 return handle(function->shared()->DebugName(), isolate);
11021 } 11009 }
(...skipping 5888 matching lines...) Expand 10 before | Expand all | Expand 10 after
16910 if (cell->value() != *new_value) { 16898 if (cell->value() != *new_value) {
16911 cell->set_value(*new_value); 16899 cell->set_value(*new_value);
16912 Isolate* isolate = cell->GetIsolate(); 16900 Isolate* isolate = cell->GetIsolate();
16913 cell->dependent_code()->DeoptimizeDependentCodeGroup( 16901 cell->dependent_code()->DeoptimizeDependentCodeGroup(
16914 isolate, DependentCode::kPropertyCellChangedGroup); 16902 isolate, DependentCode::kPropertyCellChangedGroup);
16915 } 16903 }
16916 } 16904 }
16917 16905
16918 } // namespace internal 16906 } // namespace internal
16919 } // namespace v8 16907 } // namespace v8
OLDNEW
« no previous file with comments | « src/objects.h ('k') | test/test262/testcfg.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698