Chromium Code Reviews| Index: src/api.cc |
| diff --git a/src/api.cc b/src/api.cc |
| index df7dd1193eb42b0557661de084d4ef036f7f2779..58988861e5eae7badf6f4536bc64586759771fc6 100644 |
| --- a/src/api.cc |
| +++ b/src/api.cc |
| @@ -52,6 +52,7 @@ |
| #include "profile-generator-inl.h" |
| #include "property-details.h" |
| #include "property.h" |
| +#include "runtime.h" |
| #include "runtime-profiler.h" |
| #include "scanner-character-streams.h" |
| #include "snapshot.h" |
| @@ -2754,6 +2755,15 @@ void v8::Array::CheckCast(Value* that) { |
| } |
| +void v8::ArrayBuffer::CheckCast(Value* that) { |
| + if (IsDeadCheck(i::Isolate::Current(), "v8::ArrayBuffer::Cast()")) return; |
| + i::Handle<i::Object> obj = Utils::OpenHandle(that); |
| + ApiCheck(obj->IsJSArrayBuffer(), |
| + "v8::ArrayBuffer::Cast()", |
| + "Could not convert to ArrayBuffer"); |
| +} |
| + |
| + |
| void v8::Date::CheckCast(v8::Value* that) { |
| i::Isolate* isolate = i::Isolate::Current(); |
| if (IsDeadCheck(isolate, "v8::Date::Cast()")) return; |
| @@ -5791,6 +5801,49 @@ Local<Object> Array::CloneElementAt(uint32_t index) { |
| return Utils::ToLocal(result); |
| } |
| +size_t v8::ArrayBuffer::ByteLength() const { |
| + i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| + if (IsDeadCheck(isolate, "v8::ArrayBuffer::ByteLength()")) return 0; |
| + i::Handle<i::JSArrayBuffer> obj = Utils::OpenHandle(this); |
| + i::Object* byte_length = obj->byte_length(); |
| + if (byte_length->IsSmi()) { |
| + return i::Smi::cast(byte_length)->value(); |
|
rossberg
2013/04/25 11:00:55
The case distinction shouldn't be needed, it's don
Dmitry Lomov (no reviews)
2013/04/25 11:48:01
Done.
|
| + } else { |
| + return static_cast<size_t>(byte_length->Number()); |
| + } |
| +} |
| + |
| +void* v8::ArrayBuffer::Data() const { |
| + i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| + if (IsDeadCheck(isolate, "v8::ArrayBuffer::Data()")) return 0; |
| + i::Handle<i::JSArrayBuffer> obj = Utils::OpenHandle(this); |
| + return obj->backing_store(); |
| +} |
| + |
| + |
| +Local<ArrayBuffer> v8::ArrayBuffer::New(size_t byte_length) { |
| + i::Isolate* isolate = i::Isolate::Current(); |
| + EnsureInitializedForIsolate(isolate, "v8::ArrayBuffer::New(size_t)"); |
| + LOG_API(isolate, "v8::ArrayBuffer::New(size_t)"); |
| + ENTER_V8(isolate); |
| + i::Handle<i::JSArrayBuffer> obj = |
| + isolate->factory()->NewJSArrayBuffer(); |
| + i::Runtime::AllocateAndSetupArrayBuffer(isolate, obj, byte_length); |
| + return Utils::ToLocal(obj); |
| +} |
| + |
| + |
| +Local<ArrayBuffer> v8::ArrayBuffer::New(void* data, size_t byte_length) { |
| + i::Isolate* isolate = i::Isolate::Current(); |
| + EnsureInitializedForIsolate(isolate, "v8::ArrayBuffer::New(void*, size_t)"); |
| + LOG_API(isolate, "v8::ArrayBuffer::New(void*, size_t)"); |
| + ENTER_V8(isolate); |
| + i::Handle<i::JSArrayBuffer> obj = |
| + isolate->factory()->NewJSArrayBuffer(); |
| + i::Runtime::SetupArrayBuffer(isolate, obj, data, byte_length); |
| + return Utils::ToLocal(obj); |
| +} |
| + |
| Local<Symbol> v8::Symbol::New(Isolate* isolate) { |
| i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |