Index: src/func-name-inferrer.cc |
diff --git a/src/func-name-inferrer.cc b/src/func-name-inferrer.cc |
index a3c2f08ae7a34e23e3f909614dadc08e30a4009c..b3a64b26f826d6a3f13116745f37792fe05e1dfb 100644 |
--- a/src/func-name-inferrer.cc |
+++ b/src/func-name-inferrer.cc |
@@ -5,14 +5,16 @@ |
#include "src/v8.h" |
#include "src/ast.h" |
+#include "src/ast-value-factory.h" |
#include "src/func-name-inferrer.h" |
#include "src/list-inl.h" |
namespace v8 { |
namespace internal { |
-FuncNameInferrer::FuncNameInferrer(Isolate* isolate, Zone* zone) |
- : isolate_(isolate), |
+FuncNameInferrer::FuncNameInferrer(AstValueFactory* ast_value_factory, |
+ Zone* zone) |
+ : ast_value_factory_(ast_value_factory), |
entries_stack_(10, zone), |
names_stack_(5, zone), |
funcs_to_infer_(4, zone), |
@@ -20,40 +22,36 @@ FuncNameInferrer::FuncNameInferrer(Isolate* isolate, Zone* zone) |
} |
-void FuncNameInferrer::PushEnclosingName(Handle<String> name) { |
+void FuncNameInferrer::PushEnclosingName(const AstRawString* name) { |
// Enclosing name is a name of a constructor function. To check |
// that it is really a constructor, we check that it is not empty |
// and starts with a capital letter. |
- if (name->length() > 0 && Runtime::IsUpperCaseChar( |
- isolate()->runtime_state(), name->Get(0))) { |
+ if (!name->IsEmpty() && unibrow::Uppercase::Is(name->FirstCharacter())) { |
names_stack_.Add(Name(name, kEnclosingConstructorName), zone()); |
} |
} |
-void FuncNameInferrer::PushLiteralName(Handle<String> name) { |
- if (IsOpen() && |
- !String::Equals(isolate()->factory()->prototype_string(), name)) { |
+void FuncNameInferrer::PushLiteralName(const AstRawString* name) { |
+ if (IsOpen() && name != ast_value_factory_->prototype_string()) { |
names_stack_.Add(Name(name, kLiteralName), zone()); |
} |
} |
-void FuncNameInferrer::PushVariableName(Handle<String> name) { |
- if (IsOpen() && |
- !String::Equals(isolate()->factory()->dot_result_string(), name)) { |
+void FuncNameInferrer::PushVariableName(const AstRawString* name) { |
+ if (IsOpen() && name != ast_value_factory_->dot_result_string()) { |
names_stack_.Add(Name(name, kVariableName), zone()); |
} |
} |
-Handle<String> FuncNameInferrer::MakeNameFromStack() { |
- return MakeNameFromStackHelper(0, isolate()->factory()->empty_string()); |
+const AstString* FuncNameInferrer::MakeNameFromStack() { |
+ return MakeNameFromStackHelper(0, ast_value_factory_->empty_string()); |
} |
- |
-Handle<String> FuncNameInferrer::MakeNameFromStackHelper(int pos, |
- Handle<String> prev) { |
+const AstString* FuncNameInferrer::MakeNameFromStackHelper( |
+ int pos, const AstString* prev) { |
if (pos >= names_stack_.length()) return prev; |
if (pos < names_stack_.length() - 1 && |
names_stack_.at(pos).type == kVariableName && |
@@ -62,12 +60,11 @@ Handle<String> FuncNameInferrer::MakeNameFromStackHelper(int pos, |
return MakeNameFromStackHelper(pos + 1, prev); |
} else { |
if (prev->length() > 0) { |
- Handle<String> name = names_stack_.at(pos).name; |
+ const AstRawString* name = names_stack_.at(pos).name; |
if (prev->length() + name->length() + 1 > String::kMaxLength) return prev; |
- Factory* factory = isolate()->factory(); |
- Handle<String> curr = |
- factory->NewConsString(factory->dot_string(), name).ToHandleChecked(); |
- curr = factory->NewConsString(prev, curr).ToHandleChecked(); |
+ const AstConsString* curr = ast_value_factory_->NewConsString( |
+ ast_value_factory_->dot_string(), name); |
+ curr = ast_value_factory_->NewConsString(prev, curr); |
return MakeNameFromStackHelper(pos + 1, curr); |
} else { |
return MakeNameFromStackHelper(pos + 1, names_stack_.at(pos).name); |
@@ -77,9 +74,9 @@ Handle<String> FuncNameInferrer::MakeNameFromStackHelper(int pos, |
void FuncNameInferrer::InferFunctionsNames() { |
- Handle<String> func_name = MakeNameFromStack(); |
+ const AstString* func_name = MakeNameFromStack(); |
for (int i = 0; i < funcs_to_infer_.length(); ++i) { |
- funcs_to_infer_[i]->set_inferred_name(func_name); |
+ funcs_to_infer_[i]->set_raw_inferred_name(func_name); |
} |
funcs_to_infer_.Rewind(0); |
} |