Index: src/messages.cc |
diff --git a/src/messages.cc b/src/messages.cc |
index 6683443e52277c40f666732fdff58565d67d4205..908ee08e4bc7793cd4d5ed5fd91fcfb08f9f3e39 100644 |
--- a/src/messages.cc |
+++ b/src/messages.cc |
@@ -138,37 +138,50 @@ base::SmartArrayPointer<char> MessageHandler::GetLocalizedMessage( |
} |
-Handle<Object> CallSite::GetFileName(Isolate* isolate) { |
- Handle<Object> script(fun_->shared()->script(), isolate); |
+CallSite::CallSite(Isolate* isolate, Handle<JSObject> call_site_obj) |
+ : isolate_(isolate) { |
+ receiver_ = JSObject::GetDataProperty( |
+ call_site_obj, isolate->factory()->call_site_receiver_symbol()); |
+ fun_ = Handle<JSFunction>::cast(JSObject::GetDataProperty( |
+ call_site_obj, isolate->factory()->call_site_function_symbol())); |
+ pos_ = Handle<Smi>::cast(JSObject::GetDataProperty( |
+ call_site_obj, |
+ isolate->factory()->call_site_position_symbol())) |
+ ->value(); |
+} |
+ |
+ |
+Handle<Object> CallSite::GetFileName() { |
+ Handle<Object> script(fun_->shared()->script(), isolate_); |
if (script->IsScript()) { |
- return Handle<Object>(Handle<Script>::cast(script)->name(), isolate); |
+ return Handle<Object>(Handle<Script>::cast(script)->name(), isolate_); |
} |
- return isolate->factory()->null_value(); |
+ return isolate_->factory()->null_value(); |
} |
-Handle<Object> CallSite::GetFunctionName(Isolate* isolate) { |
+Handle<Object> CallSite::GetFunctionName() { |
Handle<String> result = JSFunction::GetDebugName(fun_); |
if (result->length() != 0) return result; |
- Handle<Object> script(fun_->shared()->script(), isolate); |
+ Handle<Object> script(fun_->shared()->script(), isolate_); |
if (script->IsScript() && |
Handle<Script>::cast(script)->compilation_type() == |
Script::COMPILATION_TYPE_EVAL) { |
- return isolate->factory()->eval_string(); |
+ return isolate_->factory()->eval_string(); |
} |
- return isolate->factory()->null_value(); |
+ return isolate_->factory()->null_value(); |
} |
-Handle<Object> CallSite::GetScriptNameOrSourceUrl(Isolate* isolate) { |
- Handle<Object> script_obj(fun_->shared()->script(), isolate); |
+Handle<Object> CallSite::GetScriptNameOrSourceUrl() { |
+ Handle<Object> script_obj(fun_->shared()->script(), isolate_); |
if (script_obj->IsScript()) { |
Handle<Script> script = Handle<Script>::cast(script_obj); |
Object* source_url = script->source_url(); |
- if (source_url->IsString()) return Handle<Object>(source_url, isolate); |
- return Handle<Object>(script->name(), isolate); |
+ if (source_url->IsString()) return Handle<Object>(source_url, isolate_); |
+ return Handle<Object>(script->name(), isolate_); |
} |
- return isolate->factory()->null_value(); |
+ return isolate_->factory()->null_value(); |
} |
@@ -190,25 +203,25 @@ bool CheckMethodName(Isolate* isolate, Handle<JSObject> obj, Handle<Name> name, |
} |
-Handle<Object> CallSite::GetMethodName(Isolate* isolate) { |
- MaybeHandle<JSReceiver> maybe = Object::ToObject(isolate, receiver_); |
+Handle<Object> CallSite::GetMethodName() { |
+ MaybeHandle<JSReceiver> maybe = Object::ToObject(isolate_, receiver_); |
Handle<JSReceiver> receiver; |
if (!maybe.ToHandle(&receiver) || !receiver->IsJSObject()) { |
- return isolate->factory()->null_value(); |
+ return isolate_->factory()->null_value(); |
} |
Handle<JSObject> obj = Handle<JSObject>::cast(receiver); |
- Handle<Object> function_name(fun_->shared()->name(), isolate); |
+ Handle<Object> function_name(fun_->shared()->name(), isolate_); |
if (function_name->IsName()) { |
Handle<Name> name = Handle<Name>::cast(function_name); |
- if (CheckMethodName(isolate, obj, name, fun_, |
+ if (CheckMethodName(isolate_, obj, name, fun_, |
LookupIterator::PROTOTYPE_CHAIN_SKIP_INTERCEPTOR)) |
return name; |
} |
- HandleScope outer_scope(isolate); |
+ HandleScope outer_scope(isolate_); |
Handle<Object> result; |
- for (PrototypeIterator iter(isolate, obj, |
+ for (PrototypeIterator iter(isolate_, obj, |
PrototypeIterator::START_AT_RECEIVER); |
!iter.IsAtEnd(); iter.Advance()) { |
Handle<Object> current = PrototypeIterator::GetCurrent(iter); |
@@ -217,26 +230,26 @@ Handle<Object> CallSite::GetMethodName(Isolate* isolate) { |
if (current_obj->IsAccessCheckNeeded()) break; |
Handle<FixedArray> keys = JSObject::GetEnumPropertyKeys(current_obj, false); |
for (int i = 0; i < keys->length(); i++) { |
- HandleScope inner_scope(isolate); |
+ HandleScope inner_scope(isolate_); |
if (!keys->get(i)->IsName()) continue; |
- Handle<Name> name_key(Name::cast(keys->get(i)), isolate); |
- if (!CheckMethodName(isolate, current_obj, name_key, fun_, |
+ Handle<Name> name_key(Name::cast(keys->get(i)), isolate_); |
+ if (!CheckMethodName(isolate_, current_obj, name_key, fun_, |
LookupIterator::OWN_SKIP_INTERCEPTOR)) |
continue; |
// Return null in case of duplicates to avoid confusion. |
- if (!result.is_null()) return isolate->factory()->null_value(); |
+ if (!result.is_null()) return isolate_->factory()->null_value(); |
result = inner_scope.CloseAndEscape(name_key); |
} |
} |
if (!result.is_null()) return outer_scope.CloseAndEscape(result); |
- return isolate->factory()->null_value(); |
+ return isolate_->factory()->null_value(); |
} |
-int CallSite::GetLineNumber(Isolate* isolate) { |
+int CallSite::GetLineNumber() { |
if (pos_ >= 0) { |
- Handle<Object> script_obj(fun_->shared()->script(), isolate); |
+ Handle<Object> script_obj(fun_->shared()->script(), isolate_); |
if (script_obj->IsScript()) { |
Handle<Script> script = Handle<Script>::cast(script_obj); |
return Script::GetLineNumber(script, pos_) + 1; |
@@ -246,9 +259,9 @@ int CallSite::GetLineNumber(Isolate* isolate) { |
} |
-int CallSite::GetColumnNumber(Isolate* isolate) { |
+int CallSite::GetColumnNumber() { |
if (pos_ >= 0) { |
- Handle<Object> script_obj(fun_->shared()->script(), isolate); |
+ Handle<Object> script_obj(fun_->shared()->script(), isolate_); |
if (script_obj->IsScript()) { |
Handle<Script> script = Handle<Script>::cast(script_obj); |
return Script::GetColumnNumber(script, pos_) + 1; |
@@ -258,32 +271,32 @@ int CallSite::GetColumnNumber(Isolate* isolate) { |
} |
-bool CallSite::IsNative(Isolate* isolate) { |
- Handle<Object> script(fun_->shared()->script(), isolate); |
+bool CallSite::IsNative() { |
+ Handle<Object> script(fun_->shared()->script(), isolate_); |
return script->IsScript() && |
Handle<Script>::cast(script)->type()->value() == Script::TYPE_NATIVE; |
} |
-bool CallSite::IsToplevel(Isolate* isolate) { |
+bool CallSite::IsToplevel() { |
return receiver_->IsJSGlobalProxy() || receiver_->IsNull() || |
receiver_->IsUndefined(); |
} |
-bool CallSite::IsEval(Isolate* isolate) { |
- Handle<Object> script(fun_->shared()->script(), isolate); |
+bool CallSite::IsEval() { |
+ Handle<Object> script(fun_->shared()->script(), isolate_); |
return script->IsScript() && |
Handle<Script>::cast(script)->compilation_type() == |
Script::COMPILATION_TYPE_EVAL; |
} |
-bool CallSite::IsConstructor(Isolate* isolate) { |
+bool CallSite::IsConstructor() { |
if (!receiver_->IsJSObject()) return false; |
Handle<Object> constructor = |
JSReceiver::GetDataProperty(Handle<JSObject>::cast(receiver_), |
- isolate->factory()->constructor_string()); |
+ isolate_->factory()->constructor_string()); |
return constructor.is_identical_to(fun_); |
} |