OLD | NEW |
1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 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 1437 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1448 val = i::Execution::ToObject(obj, &has_pending_exception); | 1448 val = i::Execution::ToObject(obj, &has_pending_exception); |
1449 EXCEPTION_BAILOUT_CHECK(Local<v8::Object>()); | 1449 EXCEPTION_BAILOUT_CHECK(Local<v8::Object>()); |
1450 } | 1450 } |
1451 return Local<v8::Object>(ToApi<Object>(val)); | 1451 return Local<v8::Object>(ToApi<Object>(val)); |
1452 } | 1452 } |
1453 | 1453 |
1454 | 1454 |
1455 Local<Boolean> Value::ToBoolean() const { | 1455 Local<Boolean> Value::ToBoolean() const { |
1456 if (IsDeadCheck("v8::Value::ToBoolean()")) return Local<Boolean>(); | 1456 if (IsDeadCheck("v8::Value::ToBoolean()")) return Local<Boolean>(); |
1457 LOG_API("ToBoolean"); | 1457 LOG_API("ToBoolean"); |
1458 ENTER_V8; | |
1459 i::Handle<i::Object> obj = Utils::OpenHandle(this); | 1458 i::Handle<i::Object> obj = Utils::OpenHandle(this); |
1460 i::Handle<i::Object> val = | 1459 if (obj->IsBoolean()) { |
1461 obj->IsBoolean() ? obj : i::Execution::ToBoolean(obj); | 1460 return Local<Boolean>(ToApi<Boolean>(obj)); |
1462 return Local<Boolean>(ToApi<Boolean>(val)); | 1461 } else { |
| 1462 ENTER_V8; |
| 1463 i::Handle<i::Object> val = i::Execution::ToBoolean(obj); |
| 1464 return Local<Boolean>(ToApi<Boolean>(val)); |
| 1465 } |
1463 } | 1466 } |
1464 | 1467 |
1465 | 1468 |
1466 Local<Number> Value::ToNumber() const { | 1469 Local<Number> Value::ToNumber() const { |
1467 if (IsDeadCheck("v8::Value::ToNumber()")) return Local<Number>(); | 1470 if (IsDeadCheck("v8::Value::ToNumber()")) return Local<Number>(); |
1468 LOG_API("ToNumber"); | 1471 LOG_API("ToNumber"); |
1469 i::Handle<i::Object> obj = Utils::OpenHandle(this); | 1472 i::Handle<i::Object> obj = Utils::OpenHandle(this); |
1470 i::Handle<i::Object> num; | 1473 i::Handle<i::Object> num; |
1471 if (obj->IsNumber()) { | 1474 if (obj->IsNumber()) { |
1472 num = obj; | 1475 num = obj; |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1573 ApiCheck(obj->HasSpecificClassOf(i::Heap::Date_symbol()), | 1576 ApiCheck(obj->HasSpecificClassOf(i::Heap::Date_symbol()), |
1574 "v8::Date::Cast()", | 1577 "v8::Date::Cast()", |
1575 "Could not convert to date"); | 1578 "Could not convert to date"); |
1576 return static_cast<v8::Date*>(that); | 1579 return static_cast<v8::Date*>(that); |
1577 } | 1580 } |
1578 | 1581 |
1579 | 1582 |
1580 bool Value::BooleanValue() const { | 1583 bool Value::BooleanValue() const { |
1581 if (IsDeadCheck("v8::Value::BooleanValue()")) return false; | 1584 if (IsDeadCheck("v8::Value::BooleanValue()")) return false; |
1582 LOG_API("BooleanValue"); | 1585 LOG_API("BooleanValue"); |
1583 ENTER_V8; | |
1584 i::Handle<i::Object> obj = Utils::OpenHandle(this); | 1586 i::Handle<i::Object> obj = Utils::OpenHandle(this); |
1585 i::Handle<i::Object> value = | 1587 if (obj->IsBoolean()) { |
1586 obj->IsBoolean() ? obj : i::Execution::ToBoolean(obj); | 1588 return obj->IsTrue(); |
1587 return value->IsTrue(); | 1589 } else { |
| 1590 ENTER_V8; |
| 1591 i::Handle<i::Object> value = i::Execution::ToBoolean(obj); |
| 1592 return value->IsTrue(); |
| 1593 } |
1588 } | 1594 } |
1589 | 1595 |
1590 | 1596 |
1591 double Value::NumberValue() const { | 1597 double Value::NumberValue() const { |
1592 if (IsDeadCheck("v8::Value::NumberValue()")) return i::OS::nan_value(); | 1598 if (IsDeadCheck("v8::Value::NumberValue()")) return i::OS::nan_value(); |
1593 LOG_API("NumberValue"); | 1599 LOG_API("NumberValue"); |
1594 i::Handle<i::Object> obj = Utils::OpenHandle(this); | 1600 i::Handle<i::Object> obj = Utils::OpenHandle(this); |
1595 i::Handle<i::Object> num; | 1601 i::Handle<i::Object> num; |
1596 if (obj->IsNumber()) { | 1602 if (obj->IsNumber()) { |
1597 num = obj; | 1603 num = obj; |
(...skipping 742 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2340 } | 2346 } |
2341 ENTER_V8; | 2347 ENTER_V8; |
2342 i::Handle<i::Object> val = Utils::OpenHandle(*value); | 2348 i::Handle<i::Object> val = Utils::OpenHandle(*value); |
2343 obj->SetInternalField(index, *val); | 2349 obj->SetInternalField(index, *val); |
2344 } | 2350 } |
2345 | 2351 |
2346 | 2352 |
2347 // --- E n v i r o n m e n t --- | 2353 // --- E n v i r o n m e n t --- |
2348 | 2354 |
2349 bool v8::V8::Initialize() { | 2355 bool v8::V8::Initialize() { |
| 2356 if (i::V8::HasBeenSetup()) return true; |
2350 ENTER_V8; | 2357 ENTER_V8; |
2351 if (i::V8::HasBeenSetup()) return true; | |
2352 HandleScope scope; | 2358 HandleScope scope; |
2353 if (i::Snapshot::Initialize()) { | 2359 if (i::Snapshot::Initialize()) { |
2354 return true; | 2360 return true; |
2355 } else { | 2361 } else { |
2356 return i::V8::Initialize(NULL); | 2362 return i::V8::Initialize(NULL); |
2357 } | 2363 } |
2358 } | 2364 } |
2359 | 2365 |
2360 | 2366 |
2361 bool v8::V8::Dispose() { | 2367 bool v8::V8::Dispose() { |
(...skipping 969 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3331 reinterpret_cast<HandleScopeImplementer*>(storage); | 3337 reinterpret_cast<HandleScopeImplementer*>(storage); |
3332 List<void**>* blocks_of_archived_thread = thread_local->Blocks(); | 3338 List<void**>* blocks_of_archived_thread = thread_local->Blocks(); |
3333 v8::ImplementationUtilities::HandleScopeData* handle_data_of_archived_thread = | 3339 v8::ImplementationUtilities::HandleScopeData* handle_data_of_archived_thread = |
3334 &thread_local->handle_scope_data_; | 3340 &thread_local->handle_scope_data_; |
3335 Iterate(v, blocks_of_archived_thread, handle_data_of_archived_thread); | 3341 Iterate(v, blocks_of_archived_thread, handle_data_of_archived_thread); |
3336 | 3342 |
3337 return storage + ArchiveSpacePerThread(); | 3343 return storage + ArchiveSpacePerThread(); |
3338 } | 3344 } |
3339 | 3345 |
3340 } } // namespace v8::internal | 3346 } } // namespace v8::internal |
OLD | NEW |