| OLD | NEW |
| 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 3383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3394 // to never change the result of the basic enumeration function so | 3394 // to never change the result of the basic enumeration function so |
| 3395 // we clone the result. | 3395 // we clone the result. |
| 3396 i::Handle<i::FixedArray> elms = isolate->factory()->CopyFixedArray(value); | 3396 i::Handle<i::FixedArray> elms = isolate->factory()->CopyFixedArray(value); |
| 3397 i::Handle<i::JSArray> result = | 3397 i::Handle<i::JSArray> result = |
| 3398 isolate->factory()->NewJSArrayWithElements(elms); | 3398 isolate->factory()->NewJSArrayWithElements(elms); |
| 3399 return Utils::ToLocal(scope.CloseAndEscape(result)); | 3399 return Utils::ToLocal(scope.CloseAndEscape(result)); |
| 3400 } | 3400 } |
| 3401 | 3401 |
| 3402 | 3402 |
| 3403 Local<String> v8::Object::ObjectProtoToString() { | 3403 Local<String> v8::Object::ObjectProtoToString() { |
| 3404 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 3404 i::Isolate* i_isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 3405 ON_BAILOUT(isolate, "v8::Object::ObjectProtoToString()", | 3405 Isolate* isolate = reinterpret_cast<Isolate*>(i_isolate); |
| 3406 ON_BAILOUT(i_isolate, "v8::Object::ObjectProtoToString()", |
| 3406 return Local<v8::String>()); | 3407 return Local<v8::String>()); |
| 3407 ENTER_V8(isolate); | 3408 ENTER_V8(i_isolate); |
| 3408 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 3409 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
| 3409 | 3410 |
| 3410 i::Handle<i::Object> name(self->class_name(), isolate); | 3411 i::Handle<i::Object> name(self->class_name(), i_isolate); |
| 3411 | 3412 |
| 3412 // Native implementation of Object.prototype.toString (v8natives.js): | 3413 // Native implementation of Object.prototype.toString (v8natives.js): |
| 3413 // var c = %_ClassOf(this); | 3414 // var c = %_ClassOf(this); |
| 3414 // if (c === 'Arguments') c = 'Object'; | 3415 // if (c === 'Arguments') c = 'Object'; |
| 3415 // return "[object " + c + "]"; | 3416 // return "[object " + c + "]"; |
| 3416 | 3417 |
| 3417 if (!name->IsString()) { | 3418 if (!name->IsString()) { |
| 3418 return v8::String::New("[object ]"); | 3419 return v8::String::NewFromUtf8(isolate, "[object ]"); |
| 3419 | |
| 3420 } else { | 3420 } else { |
| 3421 i::Handle<i::String> class_name = i::Handle<i::String>::cast(name); | 3421 i::Handle<i::String> class_name = i::Handle<i::String>::cast(name); |
| 3422 if (class_name->IsOneByteEqualTo(STATIC_ASCII_VECTOR("Arguments"))) { | 3422 if (class_name->IsOneByteEqualTo(STATIC_ASCII_VECTOR("Arguments"))) { |
| 3423 return v8::String::New("[object Object]"); | 3423 return v8::String::NewFromUtf8(isolate, "[object Object]"); |
| 3424 | |
| 3425 } else { | 3424 } else { |
| 3426 const char* prefix = "[object "; | 3425 const char* prefix = "[object "; |
| 3427 Local<String> str = Utils::ToLocal(class_name); | 3426 Local<String> str = Utils::ToLocal(class_name); |
| 3428 const char* postfix = "]"; | 3427 const char* postfix = "]"; |
| 3429 | 3428 |
| 3430 int prefix_len = i::StrLength(prefix); | 3429 int prefix_len = i::StrLength(prefix); |
| 3431 int str_len = str->Utf8Length(); | 3430 int str_len = str->Utf8Length(); |
| 3432 int postfix_len = i::StrLength(postfix); | 3431 int postfix_len = i::StrLength(postfix); |
| 3433 | 3432 |
| 3434 int buf_len = prefix_len + str_len + postfix_len; | 3433 int buf_len = prefix_len + str_len + postfix_len; |
| 3435 i::ScopedVector<char> buf(buf_len); | 3434 i::ScopedVector<char> buf(buf_len); |
| 3436 | 3435 |
| 3437 // Write prefix. | 3436 // Write prefix. |
| 3438 char* ptr = buf.start(); | 3437 char* ptr = buf.start(); |
| 3439 i::OS::MemCopy(ptr, prefix, prefix_len * v8::internal::kCharSize); | 3438 i::OS::MemCopy(ptr, prefix, prefix_len * v8::internal::kCharSize); |
| 3440 ptr += prefix_len; | 3439 ptr += prefix_len; |
| 3441 | 3440 |
| 3442 // Write real content. | 3441 // Write real content. |
| 3443 str->WriteUtf8(ptr, str_len); | 3442 str->WriteUtf8(ptr, str_len); |
| 3444 ptr += str_len; | 3443 ptr += str_len; |
| 3445 | 3444 |
| 3446 // Write postfix. | 3445 // Write postfix. |
| 3447 i::OS::MemCopy(ptr, postfix, postfix_len * v8::internal::kCharSize); | 3446 i::OS::MemCopy(ptr, postfix, postfix_len * v8::internal::kCharSize); |
| 3448 | 3447 |
| 3449 // Copy the buffer into a heap-allocated string and return it. | 3448 // Copy the buffer into a heap-allocated string and return it. |
| 3450 Local<String> result = v8::String::New(buf.start(), buf_len); | 3449 Local<String> result = v8::String::NewFromUtf8( |
| 3450 isolate, buf.start(), String::kNormalString, buf_len); |
| 3451 return result; | 3451 return result; |
| 3452 } | 3452 } |
| 3453 } | 3453 } |
| 3454 } | 3454 } |
| 3455 | 3455 |
| 3456 | 3456 |
| 3457 Local<Value> v8::Object::GetConstructor() { | 3457 Local<Value> v8::Object::GetConstructor() { |
| 3458 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 3458 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 3459 ON_BAILOUT(isolate, "v8::Object::GetConstructor()", | 3459 ON_BAILOUT(isolate, "v8::Object::GetConstructor()", |
| 3460 return Local<v8::Function>()); | 3460 return Local<v8::Function>()); |
| (...skipping 4217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7678 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); | 7678 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); |
| 7679 Address callback_address = | 7679 Address callback_address = |
| 7680 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 7680 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
| 7681 VMState<EXTERNAL> state(isolate); | 7681 VMState<EXTERNAL> state(isolate); |
| 7682 ExternalCallbackScope call_scope(isolate, callback_address); | 7682 ExternalCallbackScope call_scope(isolate, callback_address); |
| 7683 callback(info); | 7683 callback(info); |
| 7684 } | 7684 } |
| 7685 | 7685 |
| 7686 | 7686 |
| 7687 } } // namespace v8::internal | 7687 } } // namespace v8::internal |
| OLD | NEW |