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

Side by Side Diff: src/api.cc

Issue 239543010: Revert "Move functions from handles.cc to where they belong." (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 8 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
« no previous file with comments | « src/allocation-tracker.cc ('k') | src/bootstrapper.cc » ('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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 1597 matching lines...) Expand 10 before | Expand all | Expand 10 after
1608 1608
1609 1609
1610 int UnboundScript::GetLineNumber(int code_pos) { 1610 int UnboundScript::GetLineNumber(int code_pos) {
1611 i::Handle<i::HeapObject> obj = 1611 i::Handle<i::HeapObject> obj =
1612 i::Handle<i::HeapObject>::cast(Utils::OpenHandle(this)); 1612 i::Handle<i::HeapObject>::cast(Utils::OpenHandle(this));
1613 i::Isolate* isolate = obj->GetIsolate(); 1613 i::Isolate* isolate = obj->GetIsolate();
1614 ON_BAILOUT(isolate, "v8::UnboundScript::GetLineNumber()", return -1); 1614 ON_BAILOUT(isolate, "v8::UnboundScript::GetLineNumber()", return -1);
1615 LOG_API(isolate, "UnboundScript::GetLineNumber"); 1615 LOG_API(isolate, "UnboundScript::GetLineNumber");
1616 if (obj->IsScript()) { 1616 if (obj->IsScript()) {
1617 i::Handle<i::Script> script(i::Script::cast(*obj)); 1617 i::Handle<i::Script> script(i::Script::cast(*obj));
1618 return i::Script::GetLineNumber(script, code_pos); 1618 return i::GetScriptLineNumber(script, code_pos);
1619 } else { 1619 } else {
1620 return -1; 1620 return -1;
1621 } 1621 }
1622 } 1622 }
1623 1623
1624 1624
1625 Handle<Value> UnboundScript::GetScriptName() { 1625 Handle<Value> UnboundScript::GetScriptName() {
1626 i::Handle<i::HeapObject> obj = 1626 i::Handle<i::HeapObject> obj =
1627 i::Handle<i::HeapObject>::cast(Utils::OpenHandle(this)); 1627 i::Handle<i::HeapObject>::cast(Utils::OpenHandle(this));
1628 i::Isolate* isolate = obj->GetIsolate(); 1628 i::Isolate* isolate = obj->GetIsolate();
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
1976 return scope.Escape(Utils::StackTraceToLocal(stackTrace)); 1976 return scope.Escape(Utils::StackTraceToLocal(stackTrace));
1977 } 1977 }
1978 1978
1979 1979
1980 MUST_USE_RESULT static i::MaybeHandle<i::Object> CallV8HeapFunction( 1980 MUST_USE_RESULT static i::MaybeHandle<i::Object> CallV8HeapFunction(
1981 const char* name, 1981 const char* name,
1982 i::Handle<i::Object> recv, 1982 i::Handle<i::Object> recv,
1983 int argc, 1983 int argc,
1984 i::Handle<i::Object> argv[]) { 1984 i::Handle<i::Object> argv[]) {
1985 i::Isolate* isolate = i::Isolate::Current(); 1985 i::Isolate* isolate = i::Isolate::Current();
1986 i::Handle<i::String> fmt_str =
1987 isolate->factory()->InternalizeUtf8String(name);
1986 i::Handle<i::Object> object_fun = 1988 i::Handle<i::Object> object_fun =
1987 i::Object::GetProperty( 1989 i::Object::GetProperty(
1988 isolate, isolate->js_builtins_object(), name).ToHandleChecked(); 1990 isolate->js_builtins_object(), fmt_str).ToHandleChecked();
1989 i::Handle<i::JSFunction> fun = i::Handle<i::JSFunction>::cast(object_fun); 1991 i::Handle<i::JSFunction> fun = i::Handle<i::JSFunction>::cast(object_fun);
1990 return i::Execution::Call(isolate, fun, recv, argc, argv); 1992 return i::Execution::Call(isolate, fun, recv, argc, argv);
1991 } 1993 }
1992 1994
1993 1995
1994 MUST_USE_RESULT static i::MaybeHandle<i::Object> CallV8HeapFunction( 1996 MUST_USE_RESULT static i::MaybeHandle<i::Object> CallV8HeapFunction(
1995 const char* name, 1997 const char* name,
1996 i::Handle<i::Object> data) { 1998 i::Handle<i::Object> data) {
1997 i::Handle<i::Object> argv[] = { data }; 1999 i::Handle<i::Object> argv[] = { data };
1998 return CallV8HeapFunction(name, 2000 return CallV8HeapFunction(name,
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
2147 } 2149 }
2148 2150
2149 2151
2150 // --- S t a c k F r a m e --- 2152 // --- S t a c k F r a m e ---
2151 2153
2152 int StackFrame::GetLineNumber() const { 2154 int StackFrame::GetLineNumber() const {
2153 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 2155 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
2154 ENTER_V8(isolate); 2156 ENTER_V8(isolate);
2155 i::HandleScope scope(isolate); 2157 i::HandleScope scope(isolate);
2156 i::Handle<i::JSObject> self = Utils::OpenHandle(this); 2158 i::Handle<i::JSObject> self = Utils::OpenHandle(this);
2157 i::Handle<i::Object> line = i::Object::GetProperty( 2159 i::Handle<i::Object> line = GetProperty(self, "lineNumber").ToHandleChecked();
2158 isolate, self, "lineNumber").ToHandleChecked();
2159 if (!line->IsSmi()) { 2160 if (!line->IsSmi()) {
2160 return Message::kNoLineNumberInfo; 2161 return Message::kNoLineNumberInfo;
2161 } 2162 }
2162 return i::Smi::cast(*line)->value(); 2163 return i::Smi::cast(*line)->value();
2163 } 2164 }
2164 2165
2165 2166
2166 int StackFrame::GetColumn() const { 2167 int StackFrame::GetColumn() const {
2167 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 2168 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
2168 ENTER_V8(isolate); 2169 ENTER_V8(isolate);
2169 i::HandleScope scope(isolate); 2170 i::HandleScope scope(isolate);
2170 i::Handle<i::JSObject> self = Utils::OpenHandle(this); 2171 i::Handle<i::JSObject> self = Utils::OpenHandle(this);
2171 i::Handle<i::Object> column = i::Object::GetProperty( 2172 i::Handle<i::Object> column = GetProperty(self, "column").ToHandleChecked();
2172 isolate, self, "column").ToHandleChecked();
2173 if (!column->IsSmi()) { 2173 if (!column->IsSmi()) {
2174 return Message::kNoColumnInfo; 2174 return Message::kNoColumnInfo;
2175 } 2175 }
2176 return i::Smi::cast(*column)->value(); 2176 return i::Smi::cast(*column)->value();
2177 } 2177 }
2178 2178
2179 2179
2180 int StackFrame::GetScriptId() const { 2180 int StackFrame::GetScriptId() const {
2181 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 2181 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
2182 ENTER_V8(isolate); 2182 ENTER_V8(isolate);
2183 i::HandleScope scope(isolate); 2183 i::HandleScope scope(isolate);
2184 i::Handle<i::JSObject> self = Utils::OpenHandle(this); 2184 i::Handle<i::JSObject> self = Utils::OpenHandle(this);
2185 i::Handle<i::Object> scriptId = i::Object::GetProperty( 2185 i::Handle<i::Object> scriptId =
2186 isolate, self, "scriptId").ToHandleChecked(); 2186 GetProperty(self, "scriptId").ToHandleChecked();
2187 if (!scriptId->IsSmi()) { 2187 if (!scriptId->IsSmi()) {
2188 return Message::kNoScriptIdInfo; 2188 return Message::kNoScriptIdInfo;
2189 } 2189 }
2190 return i::Smi::cast(*scriptId)->value(); 2190 return i::Smi::cast(*scriptId)->value();
2191 } 2191 }
2192 2192
2193 2193
2194 Local<String> StackFrame::GetScriptName() const { 2194 Local<String> StackFrame::GetScriptName() const {
2195 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 2195 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
2196 ENTER_V8(isolate); 2196 ENTER_V8(isolate);
2197 EscapableHandleScope scope(reinterpret_cast<Isolate*>(isolate)); 2197 EscapableHandleScope scope(reinterpret_cast<Isolate*>(isolate));
2198 i::Handle<i::JSObject> self = Utils::OpenHandle(this); 2198 i::Handle<i::JSObject> self = Utils::OpenHandle(this);
2199 i::Handle<i::Object> name = i::Object::GetProperty( 2199 i::Handle<i::Object> name = GetProperty(self, "scriptName").ToHandleChecked();
2200 isolate, self, "scriptName").ToHandleChecked();
2201 if (!name->IsString()) { 2200 if (!name->IsString()) {
2202 return Local<String>(); 2201 return Local<String>();
2203 } 2202 }
2204 return scope.Escape(Local<String>::Cast(Utils::ToLocal(name))); 2203 return scope.Escape(Local<String>::Cast(Utils::ToLocal(name)));
2205 } 2204 }
2206 2205
2207 2206
2208 Local<String> StackFrame::GetScriptNameOrSourceURL() const { 2207 Local<String> StackFrame::GetScriptNameOrSourceURL() const {
2209 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 2208 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
2210 ENTER_V8(isolate); 2209 ENTER_V8(isolate);
2211 EscapableHandleScope scope(reinterpret_cast<Isolate*>(isolate)); 2210 EscapableHandleScope scope(reinterpret_cast<Isolate*>(isolate));
2212 i::Handle<i::JSObject> self = Utils::OpenHandle(this); 2211 i::Handle<i::JSObject> self = Utils::OpenHandle(this);
2213 i::Handle<i::Object> name = i::Object::GetProperty( 2212 i::Handle<i::Object> name =
2214 isolate, self, "scriptNameOrSourceURL").ToHandleChecked(); 2213 GetProperty(self, "scriptNameOrSourceURL").ToHandleChecked();
2215 if (!name->IsString()) { 2214 if (!name->IsString()) {
2216 return Local<String>(); 2215 return Local<String>();
2217 } 2216 }
2218 return scope.Escape(Local<String>::Cast(Utils::ToLocal(name))); 2217 return scope.Escape(Local<String>::Cast(Utils::ToLocal(name)));
2219 } 2218 }
2220 2219
2221 2220
2222 Local<String> StackFrame::GetFunctionName() const { 2221 Local<String> StackFrame::GetFunctionName() const {
2223 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 2222 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
2224 ENTER_V8(isolate); 2223 ENTER_V8(isolate);
2225 EscapableHandleScope scope(reinterpret_cast<Isolate*>(isolate)); 2224 EscapableHandleScope scope(reinterpret_cast<Isolate*>(isolate));
2226 i::Handle<i::JSObject> self = Utils::OpenHandle(this); 2225 i::Handle<i::JSObject> self = Utils::OpenHandle(this);
2227 i::Handle<i::Object> name = i::Object::GetProperty( 2226 i::Handle<i::Object> name =
2228 isolate, self, "functionName").ToHandleChecked(); 2227 GetProperty(self, "functionName").ToHandleChecked();
2229 if (!name->IsString()) { 2228 if (!name->IsString()) {
2230 return Local<String>(); 2229 return Local<String>();
2231 } 2230 }
2232 return scope.Escape(Local<String>::Cast(Utils::ToLocal(name))); 2231 return scope.Escape(Local<String>::Cast(Utils::ToLocal(name)));
2233 } 2232 }
2234 2233
2235 2234
2236 bool StackFrame::IsEval() const { 2235 bool StackFrame::IsEval() const {
2237 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 2236 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
2238 ENTER_V8(isolate); 2237 ENTER_V8(isolate);
2239 i::HandleScope scope(isolate); 2238 i::HandleScope scope(isolate);
2240 i::Handle<i::JSObject> self = Utils::OpenHandle(this); 2239 i::Handle<i::JSObject> self = Utils::OpenHandle(this);
2241 i::Handle<i::Object> is_eval = i::Object::GetProperty( 2240 i::Handle<i::Object> is_eval = GetProperty(self, "isEval").ToHandleChecked();
2242 isolate, self, "isEval").ToHandleChecked();
2243 return is_eval->IsTrue(); 2241 return is_eval->IsTrue();
2244 } 2242 }
2245 2243
2246 2244
2247 bool StackFrame::IsConstructor() const { 2245 bool StackFrame::IsConstructor() const {
2248 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 2246 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
2249 ENTER_V8(isolate); 2247 ENTER_V8(isolate);
2250 i::HandleScope scope(isolate); 2248 i::HandleScope scope(isolate);
2251 i::Handle<i::JSObject> self = Utils::OpenHandle(this); 2249 i::Handle<i::JSObject> self = Utils::OpenHandle(this);
2252 i::Handle<i::Object> is_constructor = i::Object::GetProperty( 2250 i::Handle<i::Object> is_constructor =
2253 isolate, self, "isConstructor").ToHandleChecked(); 2251 GetProperty(self, "isConstructor").ToHandleChecked();
2254 return is_constructor->IsTrue(); 2252 return is_constructor->IsTrue();
2255 } 2253 }
2256 2254
2257 2255
2258 // --- J S O N --- 2256 // --- J S O N ---
2259 2257
2260 Local<Value> JSON::Parse(Local<String> json_string) { 2258 Local<Value> JSON::Parse(Local<String> json_string) {
2261 i::Handle<i::String> string = Utils::OpenHandle(*json_string); 2259 i::Handle<i::String> string = Utils::OpenHandle(*json_string);
2262 i::Isolate* isolate = string->GetIsolate(); 2260 i::Isolate* isolate = string->GetIsolate();
2263 EnsureInitializedForIsolate(isolate, "v8::JSON::Parse"); 2261 EnsureInitializedForIsolate(isolate, "v8::JSON::Parse");
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
2425 2423
2426 2424
2427 bool Value::IsNumberObject() const { 2425 bool Value::IsNumberObject() const {
2428 i::Handle<i::Object> obj = Utils::OpenHandle(this); 2426 i::Handle<i::Object> obj = Utils::OpenHandle(this);
2429 if (!obj->IsHeapObject()) return false; 2427 if (!obj->IsHeapObject()) return false;
2430 i::Isolate* isolate = i::HeapObject::cast(*obj)->GetIsolate(); 2428 i::Isolate* isolate = i::HeapObject::cast(*obj)->GetIsolate();
2431 return obj->HasSpecificClassOf(isolate->heap()->Number_string()); 2429 return obj->HasSpecificClassOf(isolate->heap()->Number_string());
2432 } 2430 }
2433 2431
2434 2432
2433 static i::Object* LookupBuiltin(i::Isolate* isolate,
2434 const char* builtin_name) {
2435 i::Handle<i::String> string =
2436 isolate->factory()->InternalizeUtf8String(builtin_name);
2437 return *i::Object::GetProperty(
2438 isolate->js_builtins_object(), string).ToHandleChecked();
2439 }
2440
2441
2435 static bool CheckConstructor(i::Isolate* isolate, 2442 static bool CheckConstructor(i::Isolate* isolate,
2436 i::Handle<i::JSObject> obj, 2443 i::Handle<i::JSObject> obj,
2437 const char* class_name) { 2444 const char* class_name) {
2438 i::Handle<i::Object> constr(obj->map()->constructor(), isolate); 2445 i::Object* constr = obj->map()->constructor();
2439 if (!constr->IsJSFunction()) return false; 2446 if (!constr->IsJSFunction()) return false;
2440 i::Handle<i::JSFunction> func = i::Handle<i::JSFunction>::cast(constr); 2447 i::JSFunction* func = i::JSFunction::cast(constr);
2441 return func->shared()->native() && constr.is_identical_to( 2448 return func->shared()->native() &&
2442 i::Object::GetProperty(isolate, 2449 constr == LookupBuiltin(isolate, class_name);
2443 isolate->js_builtins_object(),
2444 class_name).ToHandleChecked());
2445 } 2450 }
2446 2451
2447 2452
2448 bool Value::IsNativeError() const { 2453 bool Value::IsNativeError() const {
2449 i::Handle<i::Object> obj = Utils::OpenHandle(this); 2454 i::Handle<i::Object> obj = Utils::OpenHandle(this);
2450 if (obj->IsJSObject()) { 2455 if (obj->IsJSObject()) {
2451 i::Handle<i::JSObject> js_obj(i::JSObject::cast(*obj)); 2456 i::Handle<i::JSObject> js_obj(i::JSObject::cast(*obj));
2452 i::Isolate* isolate = js_obj->GetIsolate(); 2457 i::Isolate* isolate = js_obj->GetIsolate();
2453 return CheckConstructor(isolate, js_obj, "$Error") || 2458 return CheckConstructor(isolate, js_obj, "$Error") ||
2454 CheckConstructor(isolate, js_obj, "$EvalError") || 2459 CheckConstructor(isolate, js_obj, "$EvalError") ||
(...skipping 742 matching lines...) Expand 10 before | Expand all | Expand 10 after
3197 3202
3198 Local<Array> v8::Object::GetPropertyNames() { 3203 Local<Array> v8::Object::GetPropertyNames() {
3199 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 3204 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
3200 ON_BAILOUT(isolate, "v8::Object::GetPropertyNames()", 3205 ON_BAILOUT(isolate, "v8::Object::GetPropertyNames()",
3201 return Local<v8::Array>()); 3206 return Local<v8::Array>());
3202 ENTER_V8(isolate); 3207 ENTER_V8(isolate);
3203 i::HandleScope scope(isolate); 3208 i::HandleScope scope(isolate);
3204 i::Handle<i::JSObject> self = Utils::OpenHandle(this); 3209 i::Handle<i::JSObject> self = Utils::OpenHandle(this);
3205 EXCEPTION_PREAMBLE(isolate); 3210 EXCEPTION_PREAMBLE(isolate);
3206 i::Handle<i::FixedArray> value; 3211 i::Handle<i::FixedArray> value;
3207 has_pending_exception = !i::JSReceiver::GetKeys( 3212 has_pending_exception =
3208 self, i::JSReceiver::INCLUDE_PROTOS).ToHandle(&value); 3213 !i::GetKeysInFixedArrayFor(self, i::INCLUDE_PROTOS).ToHandle(&value);
3209 EXCEPTION_BAILOUT_CHECK(isolate, Local<v8::Array>()); 3214 EXCEPTION_BAILOUT_CHECK(isolate, Local<v8::Array>());
3210 // Because we use caching to speed up enumeration it is important 3215 // Because we use caching to speed up enumeration it is important
3211 // to never change the result of the basic enumeration function so 3216 // to never change the result of the basic enumeration function so
3212 // we clone the result. 3217 // we clone the result.
3213 i::Handle<i::FixedArray> elms = isolate->factory()->CopyFixedArray(value); 3218 i::Handle<i::FixedArray> elms = isolate->factory()->CopyFixedArray(value);
3214 i::Handle<i::JSArray> result = 3219 i::Handle<i::JSArray> result =
3215 isolate->factory()->NewJSArrayWithElements(elms); 3220 isolate->factory()->NewJSArrayWithElements(elms);
3216 return Utils::ToLocal(scope.CloseAndEscape(result)); 3221 return Utils::ToLocal(scope.CloseAndEscape(result));
3217 } 3222 }
3218 3223
3219 3224
3220 Local<Array> v8::Object::GetOwnPropertyNames() { 3225 Local<Array> v8::Object::GetOwnPropertyNames() {
3221 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); 3226 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
3222 ON_BAILOUT(isolate, "v8::Object::GetOwnPropertyNames()", 3227 ON_BAILOUT(isolate, "v8::Object::GetOwnPropertyNames()",
3223 return Local<v8::Array>()); 3228 return Local<v8::Array>());
3224 ENTER_V8(isolate); 3229 ENTER_V8(isolate);
3225 i::HandleScope scope(isolate); 3230 i::HandleScope scope(isolate);
3226 i::Handle<i::JSObject> self = Utils::OpenHandle(this); 3231 i::Handle<i::JSObject> self = Utils::OpenHandle(this);
3227 EXCEPTION_PREAMBLE(isolate); 3232 EXCEPTION_PREAMBLE(isolate);
3228 i::Handle<i::FixedArray> value; 3233 i::Handle<i::FixedArray> value;
3229 has_pending_exception = !i::JSReceiver::GetKeys( 3234 has_pending_exception =
3230 self, i::JSReceiver::LOCAL_ONLY).ToHandle(&value); 3235 !i::GetKeysInFixedArrayFor(self, i::LOCAL_ONLY).ToHandle(&value);
3231 EXCEPTION_BAILOUT_CHECK(isolate, Local<v8::Array>()); 3236 EXCEPTION_BAILOUT_CHECK(isolate, Local<v8::Array>());
3232 // Because we use caching to speed up enumeration it is important 3237 // Because we use caching to speed up enumeration it is important
3233 // to never change the result of the basic enumeration function so 3238 // to never change the result of the basic enumeration function so
3234 // we clone the result. 3239 // we clone the result.
3235 i::Handle<i::FixedArray> elms = isolate->factory()->CopyFixedArray(value); 3240 i::Handle<i::FixedArray> elms = isolate->factory()->CopyFixedArray(value);
3236 i::Handle<i::JSArray> result = 3241 i::Handle<i::JSArray> result =
3237 isolate->factory()->NewJSArrayWithElements(elms); 3242 isolate->factory()->NewJSArrayWithElements(elms);
3238 return Utils::ToLocal(scope.CloseAndEscape(result)); 3243 return Utils::ToLocal(scope.CloseAndEscape(result));
3239 } 3244 }
3240 3245
(...skipping 790 matching lines...) Expand 10 before | Expand all | Expand 10 after
4031 } 4036 }
4032 } 4037 }
4033 return ToApiHandle<Primitive>(isolate->factory()->undefined_value()); 4038 return ToApiHandle<Primitive>(isolate->factory()->undefined_value());
4034 } 4039 }
4035 4040
4036 4041
4037 ScriptOrigin Function::GetScriptOrigin() const { 4042 ScriptOrigin Function::GetScriptOrigin() const {
4038 i::Handle<i::JSFunction> func = Utils::OpenHandle(this); 4043 i::Handle<i::JSFunction> func = Utils::OpenHandle(this);
4039 if (func->shared()->script()->IsScript()) { 4044 if (func->shared()->script()->IsScript()) {
4040 i::Handle<i::Script> script(i::Script::cast(func->shared()->script())); 4045 i::Handle<i::Script> script(i::Script::cast(func->shared()->script()));
4041 i::Handle<i::Object> scriptName = i::Script::GetNameOrSourceURL(script); 4046 i::Handle<i::Object> scriptName = GetScriptNameOrSourceURL(script);
4042 v8::Isolate* isolate = reinterpret_cast<v8::Isolate*>(func->GetIsolate()); 4047 v8::Isolate* isolate = reinterpret_cast<v8::Isolate*>(func->GetIsolate());
4043 v8::ScriptOrigin origin( 4048 v8::ScriptOrigin origin(
4044 Utils::ToLocal(scriptName), 4049 Utils::ToLocal(scriptName),
4045 v8::Integer::New(isolate, script->line_offset()->value()), 4050 v8::Integer::New(isolate, script->line_offset()->value()),
4046 v8::Integer::New(isolate, script->column_offset()->value())); 4051 v8::Integer::New(isolate, script->column_offset()->value()));
4047 return origin; 4052 return origin;
4048 } 4053 }
4049 return v8::ScriptOrigin(Handle<Value>()); 4054 return v8::ScriptOrigin(Handle<Value>());
4050 } 4055 }
4051 4056
4052 4057
4053 const int Function::kLineOffsetNotFound = -1; 4058 const int Function::kLineOffsetNotFound = -1;
4054 4059
4055 4060
4056 int Function::GetScriptLineNumber() const { 4061 int Function::GetScriptLineNumber() const {
4057 i::Handle<i::JSFunction> func = Utils::OpenHandle(this); 4062 i::Handle<i::JSFunction> func = Utils::OpenHandle(this);
4058 if (func->shared()->script()->IsScript()) { 4063 if (func->shared()->script()->IsScript()) {
4059 i::Handle<i::Script> script(i::Script::cast(func->shared()->script())); 4064 i::Handle<i::Script> script(i::Script::cast(func->shared()->script()));
4060 return i::Script::GetLineNumber(script, func->shared()->start_position()); 4065 return i::GetScriptLineNumber(script, func->shared()->start_position());
4061 } 4066 }
4062 return kLineOffsetNotFound; 4067 return kLineOffsetNotFound;
4063 } 4068 }
4064 4069
4065 4070
4066 int Function::GetScriptColumnNumber() const { 4071 int Function::GetScriptColumnNumber() const {
4067 i::Handle<i::JSFunction> func = Utils::OpenHandle(this); 4072 i::Handle<i::JSFunction> func = Utils::OpenHandle(this);
4068 if (func->shared()->script()->IsScript()) { 4073 if (func->shared()->script()->IsScript()) {
4069 i::Handle<i::Script> script(i::Script::cast(func->shared()->script())); 4074 i::Handle<i::Script> script(i::Script::cast(func->shared()->script()));
4070 return i::Script::GetColumnNumber(script, func->shared()->start_position()); 4075 return i::GetScriptColumnNumber(script, func->shared()->start_position());
4071 } 4076 }
4072 return kLineOffsetNotFound; 4077 return kLineOffsetNotFound;
4073 } 4078 }
4074 4079
4075 4080
4076 bool Function::IsBuiltin() const { 4081 bool Function::IsBuiltin() const {
4077 i::Handle<i::JSFunction> func = Utils::OpenHandle(this); 4082 i::Handle<i::JSFunction> func = Utils::OpenHandle(this);
4078 return func->IsBuiltin(); 4083 return func->IsBuiltin();
4079 } 4084 }
4080 4085
(...skipping 3528 matching lines...) Expand 10 before | Expand all | Expand 10 after
7609 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); 7614 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate());
7610 Address callback_address = 7615 Address callback_address =
7611 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); 7616 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback));
7612 VMState<EXTERNAL> state(isolate); 7617 VMState<EXTERNAL> state(isolate);
7613 ExternalCallbackScope call_scope(isolate, callback_address); 7618 ExternalCallbackScope call_scope(isolate, callback_address);
7614 callback(info); 7619 callback(info);
7615 } 7620 }
7616 7621
7617 7622
7618 } } // namespace v8::internal 7623 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/allocation-tracker.cc ('k') | src/bootstrapper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698