Index: src/api.cc |
diff --git a/src/api.cc b/src/api.cc |
index db2045f8da97ce9727381743ff5133743d490f43..70b243ba5b2213b73ff04681a61c8c64345fd47c 100644 |
--- a/src/api.cc |
+++ b/src/api.cc |
@@ -121,9 +121,9 @@ namespace v8 { |
#define API_ENTRY_CHECK(isolate, msg) \ |
do { \ |
if (v8::Locker::IsActive()) { \ |
- ApiCheck(isolate->thread_manager()->IsLockedByCurrentThread(), \ |
- msg, \ |
- "Entering the V8 API without proper locking in place"); \ |
+ Utils::ApiCheck(isolate->thread_manager()->IsLockedByCurrentThread(), \ |
+ msg, \ |
+ "Entering the V8 API without proper locking in place"); \ |
} \ |
} while (false) |
@@ -143,15 +143,6 @@ static void DefaultFatalErrorHandler(const char* location, |
} |
-static FatalErrorCallback GetFatalErrorHandler() { |
- i::Isolate* isolate = i::Isolate::Current(); |
- if (isolate->exception_behavior() == NULL) { |
- isolate->set_exception_behavior(DefaultFatalErrorHandler); |
- } |
- return isolate->exception_behavior(); |
-} |
- |
- |
void i::FatalProcessOutOfMemory(const char* location) { |
i::V8::FatalProcessOutOfMemory(location, false); |
} |
@@ -221,21 +212,19 @@ void i::V8::FatalProcessOutOfMemory(const char* location, bool take_snapshot) { |
// HeapIterator here without doing a special GC. |
isolate->heap()->RecordStats(&heap_stats, false); |
} |
- isolate->SignalFatalError(); |
- FatalErrorCallback callback = GetFatalErrorHandler(); |
- const char* message = "Allocation failed - process out of memory"; |
- callback(location, message); |
- // If the callback returns, we stop execution. |
+ Utils::ApiCheck(false, location, "Allocation failed - process out of memory"); |
+ // If the fatal error handler returns, we stop execution. |
FATAL("API fatal error handler returned after process out of memory"); |
} |
-bool Utils::ReportApiFailure(const char* location, const char* message) { |
- FatalErrorCallback callback = GetFatalErrorHandler(); |
- callback(location, message); |
+void Utils::ReportApiFailure(const char* location, const char* message) { |
i::Isolate* isolate = i::Isolate::Current(); |
+ FatalErrorCallback callback = isolate->exception_behavior() == NULL |
+ ? DefaultFatalErrorHandler |
+ : isolate->exception_behavior(); |
+ callback(location, message); |
isolate->SignalFatalError(); |
- return false; |
} |
@@ -245,20 +234,6 @@ bool V8::IsDead() { |
} |
-static inline bool ApiCheck(bool condition, |
- const char* location, |
- const char* message) { |
- return condition ? true : Utils::ReportApiFailure(location, message); |
-} |
- |
- |
-static bool ReportEmptyHandle(const char* location) { |
- FatalErrorCallback callback = GetFatalErrorHandler(); |
- callback(location, "Reading from empty handle"); |
- return true; |
-} |
- |
- |
static inline bool IsExecutionTerminatingCheck(i::Isolate* isolate) { |
if (!isolate->IsInitialized()) return false; |
if (isolate->has_scheduled_exception()) { |
@@ -269,16 +244,6 @@ static inline bool IsExecutionTerminatingCheck(i::Isolate* isolate) { |
} |
-static inline bool EmptyCheck(const char* location, v8::Handle<v8::Data> obj) { |
- return obj.IsEmpty() ? ReportEmptyHandle(location) : false; |
-} |
- |
- |
-static inline bool EmptyCheck(const char* location, const v8::Data* obj) { |
- return (obj == 0) ? ReportEmptyHandle(location) : false; |
-} |
- |
- |
// --- S t a t i c s --- |
@@ -295,11 +260,10 @@ static bool InitializeHelper(i::Isolate* isolate) { |
static inline bool EnsureInitializedForIsolate(i::Isolate* isolate, |
const char* location) { |
- if (isolate != NULL) { |
- if (isolate->IsInitialized()) return true; |
- } |
- ASSERT(isolate == i::Isolate::Current()); |
- return ApiCheck(InitializeHelper(isolate), location, "Error initializing V8"); |
+ return (isolate != NULL && isolate->IsInitialized()) || |
+ Utils::ApiCheck(InitializeHelper(isolate), |
+ location, |
+ "Error initializing V8"); |
} |
@@ -519,11 +483,11 @@ Extension::Extension(const char* name, |
ResourceConstraints::ResourceConstraints() |
- : max_young_space_size_(0), |
- max_old_space_size_(0), |
- max_executable_size_(0), |
- stack_limit_(NULL), |
- max_available_threads_(0) { } |
+ : max_young_space_size_(0), |
+ max_old_space_size_(0), |
+ max_executable_size_(0), |
+ stack_limit_(NULL), |
+ max_available_threads_(0) { } |
void ResourceConstraints::ConfigureDefaults(uint64_t physical_memory, |
uint32_t number_of_processors) { |
@@ -688,9 +652,9 @@ EscapableHandleScope::EscapableHandleScope(Isolate* v8_isolate) { |
i::Object** EscapableHandleScope::Escape(i::Object** escape_value) { |
- ApiCheck(*escape_slot_ == isolate_->heap()->the_hole_value(), |
- "EscapeableHandleScope::Escape", |
- "Escape value set twice"); |
+ Utils::ApiCheck(*escape_slot_ == isolate_->heap()->the_hole_value(), |
+ "EscapeableHandleScope::Escape", |
+ "Escape value set twice"); |
if (escape_value == NULL) { |
*escape_slot_ = isolate_->heap()->undefined_value(); |
return NULL; |
@@ -714,27 +678,25 @@ void Context::Exit() { |
i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
i::Handle<i::Context> context = i::Handle<i::Context>::null(); |
ENTER_V8(isolate); |
- if (!ApiCheck(isolate->handle_scope_implementer()->LeaveContext(context), |
- "v8::Context::Exit()", |
- "Cannot exit non-entered context")) { |
+ i::HandleScopeImplementer* impl = isolate->handle_scope_implementer(); |
+ if (!Utils::ApiCheck(impl->LeaveContext(context), |
+ "v8::Context::Exit()", |
+ "Cannot exit non-entered context")) { |
return; |
} |
- // Content of 'last_context' could be NULL. |
- i::Context* last_context = |
- isolate->handle_scope_implementer()->RestoreContext(); |
- isolate->set_context(last_context); |
+ isolate->set_context(impl->RestoreContext()); |
} |
static void* DecodeSmiToAligned(i::Object* value, const char* location) { |
- ApiCheck(value->IsSmi(), location, "Not a Smi"); |
+ Utils::ApiCheck(value->IsSmi(), location, "Not a Smi"); |
return reinterpret_cast<void*>(value); |
} |
static i::Smi* EncodeAlignedAsSmi(void* value, const char* location) { |
i::Smi* smi = reinterpret_cast<i::Smi*>(value); |
- ApiCheck(smi->IsSmi(), location, "Pointer is not aligned"); |
+ Utils::ApiCheck(smi->IsSmi(), location, "Pointer is not aligned"); |
return smi; |
} |
@@ -745,13 +707,14 @@ static i::Handle<i::FixedArray> EmbedderDataFor(Context* context, |
const char* location) { |
i::Handle<i::Context> env = Utils::OpenHandle(context); |
bool ok = |
- ApiCheck(env->IsNativeContext(), location, "Not a native context") && |
- ApiCheck(index >= 0, location, "Negative index"); |
+ Utils::ApiCheck(env->IsNativeContext(), |
+ location, |
+ "Not a native context") && |
+ Utils::ApiCheck(index >= 0, location, "Negative index"); |
if (!ok) return i::Handle<i::FixedArray>(); |
i::Handle<i::FixedArray> data(env->embedder_data()); |
if (index < data->length()) return data; |
- if (!can_grow) { |
- Utils::ReportApiFailure(location, "Index too large"); |
+ if (!Utils::ApiCheck(can_grow, location, "Index too large")) { |
return i::Handle<i::FixedArray>(); |
} |
int new_size = i::Max(index, data->length() << 1) + 1; |
@@ -899,9 +862,9 @@ void Template::Set(v8::Handle<String> name, |
const int kSize = 3; |
v8::Isolate* v8_isolate = reinterpret_cast<v8::Isolate*>(isolate); |
v8::Handle<v8::Data> data[kSize] = { |
- name, |
- value, |
- v8::Integer::New(v8_isolate, attribute)}; |
+ name, |
+ value, |
+ v8::Integer::New(v8_isolate, attribute)}; |
TemplateSet(isolate, this, kSize, data); |
} |
@@ -920,18 +883,18 @@ void Template::SetAccessorProperty( |
const int kSize = 5; |
v8::Isolate* v8_isolate = reinterpret_cast<v8::Isolate*>(isolate); |
v8::Handle<v8::Data> data[kSize] = { |
- name, |
- getter, |
- setter, |
- v8::Integer::New(v8_isolate, attribute), |
- v8::Integer::New(v8_isolate, access_control)}; |
+ name, |
+ getter, |
+ setter, |
+ v8::Integer::New(v8_isolate, attribute), |
+ v8::Integer::New(v8_isolate, access_control)}; |
TemplateSet(isolate, this, kSize, data); |
} |
// --- F u n c t i o n T e m p l a t e --- |
static void InitializeFunctionTemplate( |
- i::Handle<i::FunctionTemplateInfo> info) { |
+ i::Handle<i::FunctionTemplateInfo> info) { |
info->set_tag(i::Smi::FromInt(Consts::FUNCTION_TEMPLATE)); |
info->set_flag(0); |
} |
@@ -1031,8 +994,8 @@ Local<Signature> Signature::New(Isolate* isolate, |
Local<AccessorSignature> AccessorSignature::New( |
- Isolate* isolate, |
- Handle<FunctionTemplate> receiver) { |
+ Isolate* isolate, |
+ Handle<FunctionTemplate> receiver) { |
return Utils::AccessorSignatureToLocal(Utils::OpenHandle(*receiver)); |
} |
@@ -1047,7 +1010,7 @@ static Local<Operation> NewDescriptor( |
i::Handle<i::DeclaredAccessorDescriptor>(); |
if (previous_descriptor != NULL) { |
previous = Utils::OpenHandle( |
- static_cast<DeclaredAccessorDescriptor*>(previous_descriptor)); |
+ static_cast<DeclaredAccessorDescriptor*>(previous_descriptor)); |
} |
i::Handle<i::DeclaredAccessorDescriptor> descriptor = |
i::DeclaredAccessorDescriptor::Create(internal_isolate, data, previous); |
@@ -1056,7 +1019,7 @@ static Local<Operation> NewDescriptor( |
Local<RawOperationDescriptor> |
- ObjectOperationDescriptor::NewInternalFieldDereference( |
+ObjectOperationDescriptor::NewInternalFieldDereference( |
Isolate* isolate, |
int internal_field) { |
i::DeclaredAccessorDescriptorData data; |
@@ -1191,9 +1154,9 @@ int TypeSwitch::match(v8::Handle<Value> value) { |
} |
-#define SET_FIELD_WRAPPED(obj, setter, cdata) do { \ |
- i::Handle<i::Object> foreign = FromCData(obj->GetIsolate(), cdata); \ |
- (obj)->setter(*foreign); \ |
+#define SET_FIELD_WRAPPED(obj, setter, cdata) do { \ |
+ i::Handle<i::Object> foreign = FromCData(obj->GetIsolate(), cdata); \ |
+ (obj)->setter(*foreign); \ |
} while (false) |
@@ -1235,13 +1198,13 @@ static i::Handle<i::AccessorInfo> SetAccessorInfoProperties( |
template<typename Getter, typename Setter> |
static i::Handle<i::AccessorInfo> MakeAccessorInfo( |
- v8::Handle<String> name, |
- Getter getter, |
- Setter setter, |
- v8::Handle<Value> data, |
- v8::AccessControl settings, |
- v8::PropertyAttribute attributes, |
- v8::Handle<AccessorSignature> signature) { |
+ v8::Handle<String> name, |
+ Getter getter, |
+ Setter setter, |
+ v8::Handle<Value> data, |
+ v8::AccessControl settings, |
+ v8::PropertyAttribute attributes, |
+ v8::Handle<AccessorSignature> signature) { |
i::Isolate* isolate = Utils::OpenHandle(*name)->GetIsolate(); |
i::Handle<i::ExecutableAccessorInfo> obj = |
isolate->factory()->NewExecutableAccessorInfo(); |
@@ -1256,13 +1219,13 @@ static i::Handle<i::AccessorInfo> MakeAccessorInfo( |
static i::Handle<i::AccessorInfo> MakeAccessorInfo( |
- v8::Handle<String> name, |
- v8::Handle<v8::DeclaredAccessorDescriptor> descriptor, |
- void* setter_ignored, |
- void* data_ignored, |
- v8::AccessControl settings, |
- v8::PropertyAttribute attributes, |
- v8::Handle<AccessorSignature> signature) { |
+ v8::Handle<String> name, |
+ v8::Handle<v8::DeclaredAccessorDescriptor> descriptor, |
+ void* setter_ignored, |
+ void* data_ignored, |
+ v8::AccessControl settings, |
+ v8::PropertyAttribute attributes, |
+ v8::Handle<AccessorSignature> signature) { |
i::Isolate* isolate = Utils::OpenHandle(*name)->GetIsolate(); |
if (descriptor.IsEmpty()) return i::Handle<i::DeclaredAccessorInfo>(); |
i::Handle<i::DeclaredAccessorInfo> obj = |
@@ -1274,8 +1237,11 @@ static i::Handle<i::AccessorInfo> MakeAccessorInfo( |
Local<ObjectTemplate> FunctionTemplate::InstanceTemplate() { |
i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
- if (EmptyCheck("v8::FunctionTemplate::InstanceTemplate()", this)) |
+ if (!Utils::ApiCheck(this != NULL, |
+ "v8::FunctionTemplate::InstanceTemplate()", |
+ "Reading from empty handle")) { |
return Local<ObjectTemplate>(); |
+ } |
ENTER_V8(isolate); |
i::Handle<i::FunctionTemplateInfo> handle = Utils::OpenHandle(this); |
if (handle->instance_template()->IsUndefined()) { |
@@ -1338,8 +1304,8 @@ Local<ObjectTemplate> ObjectTemplate::New() { |
Local<ObjectTemplate> ObjectTemplate::New( |
- i::Isolate* isolate, |
- v8::Handle<FunctionTemplate> constructor) { |
+ i::Isolate* isolate, |
+ v8::Handle<FunctionTemplate> constructor) { |
EnsureInitializedForIsolate(isolate, "v8::ObjectTemplate::New()"); |
LOG_API(isolate, "ObjectTemplate::New"); |
ENTER_V8(isolate); |
@@ -1508,10 +1474,10 @@ void ObjectTemplate::MarkAsUndetectable() { |
void ObjectTemplate::SetAccessCheckCallbacks( |
- NamedSecurityCallback named_callback, |
- IndexedSecurityCallback indexed_callback, |
- Handle<Value> data, |
- bool turned_on_by_default) { |
+ NamedSecurityCallback named_callback, |
+ IndexedSecurityCallback indexed_callback, |
+ Handle<Value> data, |
+ bool turned_on_by_default) { |
i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
ENTER_V8(isolate); |
i::HandleScope scope(isolate); |
@@ -1539,12 +1505,12 @@ void ObjectTemplate::SetAccessCheckCallbacks( |
void ObjectTemplate::SetIndexedPropertyHandler( |
- IndexedPropertyGetterCallback getter, |
- IndexedPropertySetterCallback setter, |
- IndexedPropertyQueryCallback query, |
- IndexedPropertyDeleterCallback remover, |
- IndexedPropertyEnumeratorCallback enumerator, |
- Handle<Value> data) { |
+ IndexedPropertyGetterCallback getter, |
+ IndexedPropertySetterCallback setter, |
+ IndexedPropertyQueryCallback query, |
+ IndexedPropertyDeleterCallback remover, |
+ IndexedPropertyEnumeratorCallback enumerator, |
+ Handle<Value> data) { |
i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
ENTER_V8(isolate); |
i::HandleScope scope(isolate); |
@@ -1600,9 +1566,9 @@ int ObjectTemplate::InternalFieldCount() { |
void ObjectTemplate::SetInternalFieldCount(int value) { |
i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
- if (!ApiCheck(i::Smi::IsValid(value), |
- "v8::ObjectTemplate::SetInternalFieldCount()", |
- "Invalid internal field count")) { |
+ if (!Utils::ApiCheck(i::Smi::IsValid(value), |
+ "v8::ObjectTemplate::SetInternalFieldCount()", |
+ "Invalid internal field count")) { |
return; |
} |
ENTER_V8(isolate); |
@@ -1634,7 +1600,7 @@ ScriptData* ScriptData::PreCompile(v8::Handle<String> source) { |
i::Isolate* isolate = str->GetIsolate(); |
if (str->IsExternalTwoByteString()) { |
i::ExternalTwoByteStringUtf16CharacterStream stream( |
- i::Handle<i::ExternalTwoByteString>::cast(str), 0, str->length()); |
+ i::Handle<i::ExternalTwoByteString>::cast(str), 0, str->length()); |
return i::PreParserApi::PreParse(isolate, &stream); |
} else { |
i::GenericStringUtf16CharacterStream stream(str, 0, str->length()); |
@@ -1711,16 +1677,16 @@ Local<Script> Script::New(v8::Handle<String> source, |
pre_data_impl = NULL; |
} |
i::Handle<i::SharedFunctionInfo> result = |
- i::Compiler::CompileScript(str, |
- name_obj, |
- line_offset, |
- column_offset, |
- is_shared_cross_origin, |
- isolate->global_context(), |
- NULL, |
- pre_data_impl, |
- Utils::OpenHandle(*script_data, true), |
- i::NOT_NATIVES_CODE); |
+ i::Compiler::CompileScript(str, |
+ name_obj, |
+ line_offset, |
+ column_offset, |
+ is_shared_cross_origin, |
+ isolate->global_context(), |
+ NULL, |
+ pre_data_impl, |
+ Utils::OpenHandle(*script_data, true), |
+ i::NOT_NATIVES_CODE); |
has_pending_exception = result.is_null(); |
EXCEPTION_BAILOUT_CHECK(isolate, Local<Script>()); |
raw_result = *result; |
@@ -2425,23 +2391,23 @@ bool Value::IsTypedArray() const { |
} |
-#define TYPED_ARRAY_LIST(F) \ |
-F(Uint8Array, kExternalUnsignedByteArray) \ |
-F(Int8Array, kExternalByteArray) \ |
-F(Uint16Array, kExternalUnsignedShortArray) \ |
-F(Int16Array, kExternalShortArray) \ |
-F(Uint32Array, kExternalUnsignedIntArray) \ |
-F(Int32Array, kExternalIntArray) \ |
-F(Float32Array, kExternalFloatArray) \ |
-F(Float64Array, kExternalDoubleArray) \ |
-F(Uint8ClampedArray, kExternalPixelArray) |
+#define TYPED_ARRAY_LIST(F) \ |
+ F(Uint8Array, kExternalUnsignedByteArray) \ |
+ F(Int8Array, kExternalByteArray) \ |
+ F(Uint16Array, kExternalUnsignedShortArray) \ |
+ F(Int16Array, kExternalShortArray) \ |
+ F(Uint32Array, kExternalUnsignedIntArray) \ |
+ F(Int32Array, kExternalIntArray) \ |
+ F(Float32Array, kExternalFloatArray) \ |
+ F(Float64Array, kExternalDoubleArray) \ |
+ F(Uint8ClampedArray, kExternalPixelArray) |
-#define VALUE_IS_TYPED_ARRAY(TypedArray, type_const) \ |
- bool Value::Is##TypedArray() const { \ |
- i::Handle<i::Object> obj = Utils::OpenHandle(this); \ |
- if (!obj->IsJSTypedArray()) return false; \ |
- return i::JSTypedArray::cast(*obj)->type() == type_const; \ |
+#define VALUE_IS_TYPED_ARRAY(TypedArray, type_const) \ |
+ bool Value::Is##TypedArray() const { \ |
+ i::Handle<i::Object> obj = Utils::OpenHandle(this); \ |
+ if (!obj->IsJSTypedArray()) return false; \ |
+ return i::JSTypedArray::cast(*obj)->type() == type_const; \ |
} |
TYPED_ARRAY_LIST(VALUE_IS_TYPED_ARRAY) |
@@ -2490,9 +2456,9 @@ bool Value::IsUint32() const { |
if (obj->IsNumber()) { |
double value = obj->Number(); |
return !i::IsMinusZero(value) && |
- value >= 0 && |
- value <= i::kMaxUInt32 && |
- value == i::FastUI2D(i::FastD2UI(value)); |
+ value >= 0 && |
+ value <= i::kMaxUInt32 && |
+ value == i::FastUI2D(i::FastD2UI(value)); |
} |
return false; |
} |
@@ -2544,7 +2510,7 @@ static bool CheckConstructor(i::Isolate* isolate, |
if (!constr->IsJSFunction()) return false; |
i::JSFunction* func = i::JSFunction::cast(constr); |
return func->shared()->native() && |
- constr == LookupBuiltin(isolate, class_name); |
+ constr == LookupBuiltin(isolate, class_name); |
} |
@@ -2681,106 +2647,108 @@ Local<Integer> Value::ToInteger() const { |
void i::Internals::CheckInitializedImpl(v8::Isolate* external_isolate) { |
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(external_isolate); |
- ApiCheck(isolate != NULL && isolate->IsInitialized() && !isolate->IsDead(), |
- "v8::internal::Internals::CheckInitialized()", |
- "Isolate is not initialized or V8 has died"); |
+ Utils::ApiCheck(isolate != NULL && |
+ isolate->IsInitialized() && |
+ !isolate->IsDead(), |
+ "v8::internal::Internals::CheckInitialized()", |
+ "Isolate is not initialized or V8 has died"); |
} |
void External::CheckCast(v8::Value* that) { |
- ApiCheck(Utils::OpenHandle(that)->IsExternal(), |
- "v8::External::Cast()", |
- "Could not convert to external"); |
+ Utils::ApiCheck(Utils::OpenHandle(that)->IsExternal(), |
+ "v8::External::Cast()", |
+ "Could not convert to external"); |
} |
void v8::Object::CheckCast(Value* that) { |
i::Handle<i::Object> obj = Utils::OpenHandle(that); |
- ApiCheck(obj->IsJSObject(), |
- "v8::Object::Cast()", |
- "Could not convert to object"); |
+ Utils::ApiCheck(obj->IsJSObject(), |
+ "v8::Object::Cast()", |
+ "Could not convert to object"); |
} |
void v8::Function::CheckCast(Value* that) { |
i::Handle<i::Object> obj = Utils::OpenHandle(that); |
- ApiCheck(obj->IsJSFunction(), |
- "v8::Function::Cast()", |
- "Could not convert to function"); |
+ Utils::ApiCheck(obj->IsJSFunction(), |
+ "v8::Function::Cast()", |
+ "Could not convert to function"); |
} |
void v8::String::CheckCast(v8::Value* that) { |
i::Handle<i::Object> obj = Utils::OpenHandle(that); |
- ApiCheck(obj->IsString(), |
- "v8::String::Cast()", |
- "Could not convert to string"); |
+ Utils::ApiCheck(obj->IsString(), |
+ "v8::String::Cast()", |
+ "Could not convert to string"); |
} |
void v8::Symbol::CheckCast(v8::Value* that) { |
i::Handle<i::Object> obj = Utils::OpenHandle(that); |
- ApiCheck(obj->IsSymbol(), |
- "v8::Symbol::Cast()", |
- "Could not convert to symbol"); |
+ Utils::ApiCheck(obj->IsSymbol(), |
+ "v8::Symbol::Cast()", |
+ "Could not convert to symbol"); |
} |
void v8::Number::CheckCast(v8::Value* that) { |
i::Handle<i::Object> obj = Utils::OpenHandle(that); |
- ApiCheck(obj->IsNumber(), |
- "v8::Number::Cast()", |
- "Could not convert to number"); |
+ Utils::ApiCheck(obj->IsNumber(), |
+ "v8::Number::Cast()", |
+ "Could not convert to number"); |
} |
void v8::Integer::CheckCast(v8::Value* that) { |
i::Handle<i::Object> obj = Utils::OpenHandle(that); |
- ApiCheck(obj->IsNumber(), |
- "v8::Integer::Cast()", |
- "Could not convert to number"); |
+ Utils::ApiCheck(obj->IsNumber(), |
+ "v8::Integer::Cast()", |
+ "Could not convert to number"); |
} |
void v8::Array::CheckCast(Value* that) { |
i::Handle<i::Object> obj = Utils::OpenHandle(that); |
- ApiCheck(obj->IsJSArray(), |
- "v8::Array::Cast()", |
- "Could not convert to array"); |
+ Utils::ApiCheck(obj->IsJSArray(), |
+ "v8::Array::Cast()", |
+ "Could not convert to array"); |
} |
void v8::ArrayBuffer::CheckCast(Value* that) { |
i::Handle<i::Object> obj = Utils::OpenHandle(that); |
- ApiCheck(obj->IsJSArrayBuffer(), |
- "v8::ArrayBuffer::Cast()", |
- "Could not convert to ArrayBuffer"); |
+ Utils::ApiCheck(obj->IsJSArrayBuffer(), |
+ "v8::ArrayBuffer::Cast()", |
+ "Could not convert to ArrayBuffer"); |
} |
void v8::ArrayBufferView::CheckCast(Value* that) { |
i::Handle<i::Object> obj = Utils::OpenHandle(that); |
- ApiCheck(obj->IsJSArrayBufferView(), |
- "v8::ArrayBufferView::Cast()", |
- "Could not convert to ArrayBufferView"); |
+ Utils::ApiCheck(obj->IsJSArrayBufferView(), |
+ "v8::ArrayBufferView::Cast()", |
+ "Could not convert to ArrayBufferView"); |
} |
void v8::TypedArray::CheckCast(Value* that) { |
i::Handle<i::Object> obj = Utils::OpenHandle(that); |
- ApiCheck(obj->IsJSTypedArray(), |
- "v8::TypedArray::Cast()", |
- "Could not convert to TypedArray"); |
+ Utils::ApiCheck(obj->IsJSTypedArray(), |
+ "v8::TypedArray::Cast()", |
+ "Could not convert to TypedArray"); |
} |
-#define CHECK_TYPED_ARRAY_CAST(ApiClass, typeConst) \ |
- void v8::ApiClass::CheckCast(Value* that) { \ |
- i::Handle<i::Object> obj = Utils::OpenHandle(that); \ |
- ApiCheck(obj->IsJSTypedArray() && \ |
- i::JSTypedArray::cast(*obj)->type() == typeConst, \ |
- "v8::" #ApiClass "::Cast()", \ |
- "Could not convert to " #ApiClass); \ |
+#define CHECK_TYPED_ARRAY_CAST(ApiClass, typeConst) \ |
+ void v8::ApiClass::CheckCast(Value* that) { \ |
+ i::Handle<i::Object> obj = Utils::OpenHandle(that); \ |
+ Utils::ApiCheck(obj->IsJSTypedArray() && \ |
+ i::JSTypedArray::cast(*obj)->type() == typeConst, \ |
+ "v8::" #ApiClass "::Cast()", \ |
+ "Could not convert to " #ApiClass); \ |
} |
@@ -2791,62 +2759,62 @@ TYPED_ARRAY_LIST(CHECK_TYPED_ARRAY_CAST) |
void v8::DataView::CheckCast(Value* that) { |
i::Handle<i::Object> obj = Utils::OpenHandle(that); |
- ApiCheck(obj->IsJSDataView(), |
- "v8::DataView::Cast()", |
- "Could not convert to DataView"); |
+ Utils::ApiCheck(obj->IsJSDataView(), |
+ "v8::DataView::Cast()", |
+ "Could not convert to DataView"); |
} |
void v8::Date::CheckCast(v8::Value* that) { |
i::Isolate* isolate = i::Isolate::Current(); |
i::Handle<i::Object> obj = Utils::OpenHandle(that); |
- ApiCheck(obj->HasSpecificClassOf(isolate->heap()->Date_string()), |
- "v8::Date::Cast()", |
- "Could not convert to date"); |
+ Utils::ApiCheck(obj->HasSpecificClassOf(isolate->heap()->Date_string()), |
+ "v8::Date::Cast()", |
+ "Could not convert to date"); |
} |
void v8::StringObject::CheckCast(v8::Value* that) { |
i::Isolate* isolate = i::Isolate::Current(); |
i::Handle<i::Object> obj = Utils::OpenHandle(that); |
- ApiCheck(obj->HasSpecificClassOf(isolate->heap()->String_string()), |
- "v8::StringObject::Cast()", |
- "Could not convert to StringObject"); |
+ Utils::ApiCheck(obj->HasSpecificClassOf(isolate->heap()->String_string()), |
+ "v8::StringObject::Cast()", |
+ "Could not convert to StringObject"); |
} |
void v8::SymbolObject::CheckCast(v8::Value* that) { |
i::Isolate* isolate = i::Isolate::Current(); |
i::Handle<i::Object> obj = Utils::OpenHandle(that); |
- ApiCheck(obj->HasSpecificClassOf(isolate->heap()->Symbol_string()), |
- "v8::SymbolObject::Cast()", |
- "Could not convert to SymbolObject"); |
+ Utils::ApiCheck(obj->HasSpecificClassOf(isolate->heap()->Symbol_string()), |
+ "v8::SymbolObject::Cast()", |
+ "Could not convert to SymbolObject"); |
} |
void v8::NumberObject::CheckCast(v8::Value* that) { |
i::Isolate* isolate = i::Isolate::Current(); |
i::Handle<i::Object> obj = Utils::OpenHandle(that); |
- ApiCheck(obj->HasSpecificClassOf(isolate->heap()->Number_string()), |
- "v8::NumberObject::Cast()", |
- "Could not convert to NumberObject"); |
+ Utils::ApiCheck(obj->HasSpecificClassOf(isolate->heap()->Number_string()), |
+ "v8::NumberObject::Cast()", |
+ "Could not convert to NumberObject"); |
} |
void v8::BooleanObject::CheckCast(v8::Value* that) { |
i::Isolate* isolate = i::Isolate::Current(); |
i::Handle<i::Object> obj = Utils::OpenHandle(that); |
- ApiCheck(obj->HasSpecificClassOf(isolate->heap()->Boolean_string()), |
- "v8::BooleanObject::Cast()", |
- "Could not convert to BooleanObject"); |
+ Utils::ApiCheck(obj->HasSpecificClassOf(isolate->heap()->Boolean_string()), |
+ "v8::BooleanObject::Cast()", |
+ "Could not convert to BooleanObject"); |
} |
void v8::RegExp::CheckCast(v8::Value* that) { |
i::Handle<i::Object> obj = Utils::OpenHandle(that); |
- ApiCheck(obj->IsJSRegExp(), |
- "v8::RegExp::Cast()", |
- "Could not convert to regular expression"); |
+ Utils::ApiCheck(obj->IsJSRegExp(), |
+ "v8::RegExp::Cast()", |
+ "Could not convert to regular expression"); |
} |
@@ -2978,8 +2946,9 @@ int32_t Value::Int32Value() const { |
bool Value::Equals(Handle<Value> that) const { |
i::Isolate* isolate = i::Isolate::Current(); |
- if (EmptyCheck("v8::Value::Equals()", this) || |
- EmptyCheck("v8::Value::Equals()", that)) { |
+ if (!Utils::ApiCheck(this != NULL && !that.IsEmpty(), |
+ "v8::Value::Equals()", |
+ "Reading from empty handle")) { |
return false; |
} |
LOG_API(isolate, "Equals"); |
@@ -3004,8 +2973,9 @@ bool Value::Equals(Handle<Value> that) const { |
bool Value::StrictEquals(Handle<Value> that) const { |
i::Isolate* isolate = i::Isolate::Current(); |
- if (EmptyCheck("v8::Value::StrictEquals()", this) || |
- EmptyCheck("v8::Value::StrictEquals()", that)) { |
+ if (!Utils::ApiCheck(this != NULL && !that.IsEmpty(), |
+ "v8::Value::StrictEquals()", |
+ "Reading from empty handle")) { |
return false; |
} |
LOG_API(isolate, "StrictEquals"); |
@@ -3024,7 +2994,7 @@ bool Value::StrictEquals(Handle<Value> that) const { |
return other->IsNumber() && obj->Number() == other->Number(); |
} else if (obj->IsString()) { |
return other->IsString() && |
- i::String::cast(*obj)->Equals(i::String::cast(*other)); |
+ i::String::cast(*obj)->Equals(i::String::cast(*other)); |
} else if (obj->IsUndefined() || obj->IsUndetectableObject()) { |
return other->IsUndefined() || other->IsUndetectableObject(); |
} else { |
@@ -3035,8 +3005,9 @@ bool Value::StrictEquals(Handle<Value> that) const { |
bool Value::SameValue(Handle<Value> that) const { |
i::Isolate* isolate = i::Isolate::Current(); |
- if (EmptyCheck("v8::Value::SameValue()", this) || |
- EmptyCheck("v8::Value::SameValue()", that)) { |
+ if (!Utils::ApiCheck(this != NULL && !that.IsEmpty(), |
+ "v8::Value::SameValue()", |
+ "Reading from empty handle")) { |
return false; |
} |
LOG_API(isolate, "SameValue"); |
@@ -3559,7 +3530,7 @@ static Local<Value> GetPropertyByLookup(i::Isolate* isolate, |
Local<Value> v8::Object::GetRealNamedPropertyInPrototypeChain( |
- Handle<String> key) { |
+ Handle<String> key) { |
i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
ON_BAILOUT(isolate, |
"v8::Object::GetRealNamedPropertyInPrototypeChain()", |
@@ -3772,15 +3743,16 @@ void v8::Object::SetIndexedPropertiesToPixelData(uint8_t* data, int length) { |
ON_BAILOUT(isolate, "v8::SetElementsToPixelData()", return); |
ENTER_V8(isolate); |
i::HandleScope scope(isolate); |
- if (!ApiCheck(length >= 0 && length <= i::ExternalPixelArray::kMaxLength, |
- "v8::Object::SetIndexedPropertiesToPixelData()", |
- "length exceeds max acceptable value")) { |
+ if (!Utils::ApiCheck(length >= 0 && |
+ length <= i::ExternalPixelArray::kMaxLength, |
+ "v8::Object::SetIndexedPropertiesToPixelData()", |
+ "length exceeds max acceptable value")) { |
return; |
} |
i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
- if (!ApiCheck(!self->IsJSArray(), |
- "v8::Object::SetIndexedPropertiesToPixelData()", |
- "JSArray is not supported")) { |
+ if (!Utils::ApiCheck(!self->IsJSArray(), |
+ "v8::Object::SetIndexedPropertiesToPixelData()", |
+ "JSArray is not supported")) { |
return; |
} |
PrepareExternalArrayElements(self, data, kExternalPixelArray, length); |
@@ -3828,15 +3800,15 @@ void v8::Object::SetIndexedPropertiesToExternalArrayData( |
ON_BAILOUT(isolate, "v8::SetIndexedPropertiesToExternalArrayData()", return); |
ENTER_V8(isolate); |
i::HandleScope scope(isolate); |
- if (!ApiCheck(length >= 0 && length <= i::ExternalArray::kMaxLength, |
- "v8::Object::SetIndexedPropertiesToExternalArrayData()", |
- "length exceeds max acceptable value")) { |
+ if (!Utils::ApiCheck(length >= 0 && length <= i::ExternalArray::kMaxLength, |
+ "v8::Object::SetIndexedPropertiesToExternalArrayData()", |
+ "length exceeds max acceptable value")) { |
return; |
} |
i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
- if (!ApiCheck(!self->IsJSArray(), |
- "v8::Object::SetIndexedPropertiesToExternalArrayData()", |
- "JSArray is not supported")) { |
+ if (!Utils::ApiCheck(!self->IsJSArray(), |
+ "v8::Object::SetIndexedPropertiesToExternalArrayData()", |
+ "JSArray is not supported")) { |
return; |
} |
PrepareExternalArrayElements(self, data, array_type, length); |
@@ -4000,7 +3972,7 @@ Local<Function> Function::New(Isolate* v8_isolate, |
ENTER_V8(isolate); |
return FunctionTemplateNew( |
isolate, callback, data, Local<Signature>(), length, true)-> |
- GetFunction(); |
+ GetFunction(); |
} |
@@ -4083,7 +4055,7 @@ Handle<Value> Function::GetDisplayName() const { |
i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
ON_BAILOUT(isolate, "v8::Function::GetDisplayName()", |
return ToApiHandle<Primitive>( |
- isolate->factory()->undefined_value())); |
+ isolate->factory()->undefined_value())); |
ENTER_V8(isolate); |
i::Handle<i::JSFunction> func = Utils::OpenHandle(this); |
i::Handle<i::String> property_name = |
@@ -4109,9 +4081,9 @@ ScriptOrigin Function::GetScriptOrigin() const { |
i::Handle<i::Object> scriptName = GetScriptNameOrSourceURL(script); |
v8::Isolate* isolate = reinterpret_cast<v8::Isolate*>(func->GetIsolate()); |
v8::ScriptOrigin origin( |
- Utils::ToLocal(scriptName), |
- v8::Integer::New(isolate, script->line_offset()->value()), |
- v8::Integer::New(isolate, script->column_offset()->value())); |
+ Utils::ToLocal(scriptName), |
+ v8::Integer::New(isolate, script->line_offset()->value()), |
+ v8::Integer::New(isolate, script->column_offset()->value())); |
return origin; |
} |
return v8::ScriptOrigin(Handle<Value>()); |
@@ -4198,7 +4170,7 @@ static inline bool Unaligned(const uint16_t* chars) { |
static inline const uint16_t* Align(const uint16_t* chars) { |
return reinterpret_cast<uint16_t*>( |
- reinterpret_cast<uintptr_t>(chars) & ~kAlignmentMask); |
+ reinterpret_cast<uintptr_t>(chars) & ~kAlignmentMask); |
} |
class ContainsOnlyOneByteHelper { |
@@ -4218,7 +4190,7 @@ class ContainsOnlyOneByteHelper { |
// Align to uintptr_t. |
const uint16_t* end = chars + length; |
while (Unaligned(chars) && chars != end) { |
- acc |= *chars++; |
+ acc |= *chars++; |
} |
// Read word aligned in blocks, |
// checking the return value at the end of each block. |
@@ -4322,8 +4294,8 @@ class Utf8LengthHelper : public i::AllStatic { |
class Visitor { |
public: |
inline explicit Visitor() |
- : utf8_length_(0), |
- state_(kInitialState) {} |
+ : utf8_length_(0), |
+ state_(kInitialState) {} |
void VisitOneByteString(const uint8_t* chars, int length) { |
int utf8_length = 0; |
@@ -4396,7 +4368,7 @@ class Utf8LengthHelper : public i::AllStatic { |
if (!(*state & kRightmostEdgeIsCalculated)) { |
ASSERT(!(*state & kRightmostEdgeIsSurrogate)); |
*state |= (kRightmostEdgeIsCalculated |
- | (edge_surrogate ? kRightmostEdgeIsSurrogate : 0)); |
+ | (edge_surrogate ? kRightmostEdgeIsSurrogate : 0)); |
} else if (edge_surrogate && StartsWithSurrogate(*state)) { |
*length -= unibrow::Utf8::kBytesSavedByCombiningSurrogates; |
} |
@@ -4503,13 +4475,13 @@ class Utf8WriterVisitor { |
public: |
Utf8WriterVisitor( |
char* buffer, int capacity, bool skip_capacity_check) |
- : early_termination_(false), |
- last_character_(unibrow::Utf16::kNoPreviousCharacter), |
- buffer_(buffer), |
- start_(buffer), |
- capacity_(capacity), |
- skip_capacity_check_(capacity == -1 || skip_capacity_check), |
- utf16_chars_read_(0) { |
+ : early_termination_(false), |
+ last_character_(unibrow::Utf16::kNoPreviousCharacter), |
+ buffer_(buffer), |
+ start_(buffer), |
+ capacity_(capacity), |
+ skip_capacity_check_(capacity == -1 || skip_capacity_check), |
+ utf16_chars_read_(0) { |
} |
static int WriteEndCharacter(uint16_t character, |
@@ -4656,8 +4628,8 @@ class Utf8WriterVisitor { |
static bool RecursivelySerializeToUtf8(i::String* current, |
- Utf8WriterVisitor* writer, |
- int recursion_budget) { |
+ Utf8WriterVisitor* writer, |
+ int recursion_budget) { |
while (!writer->IsDone()) { |
i::ConsString* cons_string = i::String::VisitFlat(writer, current); |
if (cons_string == NULL) return true; // Leaf node. |
@@ -4815,14 +4787,14 @@ void v8::String::VerifyExternalStringResourceBase( |
} else { |
expected = NULL; |
expectedEncoding = str->IsOneByteRepresentation() ? ASCII_ENCODING |
- : TWO_BYTE_ENCODING; |
+ : TWO_BYTE_ENCODING; |
} |
CHECK_EQ(expected, value); |
CHECK_EQ(expectedEncoding, encoding); |
} |
const v8::String::ExternalAsciiStringResource* |
- v8::String::GetExternalAsciiStringResource() const { |
+v8::String::GetExternalAsciiStringResource() const { |
i::Handle<i::String> str = Utils::OpenHandle(this); |
if (i::StringShape(*str).IsExternalAscii()) { |
const void* resource = |
@@ -4897,9 +4869,9 @@ int v8::Object::InternalFieldCount() { |
static bool InternalFieldOK(i::Handle<i::JSObject> obj, |
int index, |
const char* location) { |
- return ApiCheck(index < obj->GetInternalFieldCount(), |
- location, |
- "Internal field out of bounds"); |
+ return Utils::ApiCheck(index < obj->GetInternalFieldCount(), |
+ location, |
+ "Internal field out of bounds"); |
} |
@@ -4983,7 +4955,7 @@ void v8::V8::SetEntropySource(EntropySource entropy_source) { |
void v8::V8::SetReturnAddressLocationResolver( |
- ReturnAddressLocationResolver return_address_resolver) { |
+ ReturnAddressLocationResolver return_address_resolver) { |
i::V8::SetReturnAddressLocationResolver(return_address_resolver); |
} |
@@ -5021,9 +4993,9 @@ void v8::V8::SetJitCodeEventHandler( |
void v8::V8::SetArrayBufferAllocator( |
ArrayBuffer::Allocator* allocator) { |
- if (!ApiCheck(i::V8::ArrayBufferAllocator() == NULL, |
- "v8::V8::SetArrayBufferAllocator", |
- "ArrayBufferAllocator might only be set once")) |
+ if (!Utils::ApiCheck(i::V8::ArrayBufferAllocator() == NULL, |
+ "v8::V8::SetArrayBufferAllocator", |
+ "ArrayBufferAllocator might only be set once")) |
return; |
i::V8::SetArrayBufferAllocator(allocator); |
} |
@@ -5031,9 +5003,9 @@ void v8::V8::SetArrayBufferAllocator( |
bool v8::V8::Dispose() { |
i::Isolate* isolate = i::Isolate::Current(); |
- if (!ApiCheck(isolate != NULL && isolate->IsDefaultIsolate(), |
- "v8::V8::Dispose()", |
- "Use v8::Isolate::Dispose() for a non-default isolate.")) { |
+ if (!Utils::ApiCheck(isolate != NULL && isolate->IsDefaultIsolate(), |
+ "v8::V8::Dispose()", |
+ "Use v8::Isolate::Dispose() for non-default isolate.")) { |
return false; |
} |
i::V8::TearDown(); |
@@ -5252,7 +5224,7 @@ v8::Local<v8::Object> Context::Global() { |
// but can't presently as calls to GetProtoype will return the wrong result. |
if (i::Handle<i::JSGlobalProxy>::cast( |
global)->IsDetachedFrom(context->global_object())) { |
- global = i::Handle<i::Object>(context->global_object(), isolate); |
+ global = i::Handle<i::Object>(context->global_object(), isolate); |
} |
return Utils::ToLocal(i::Handle<i::JSObject>::cast(global)); |
} |
@@ -5472,25 +5444,23 @@ Local<String> v8::String::Concat(Handle<String> left, Handle<String> right) { |
} |
-i::Handle<i::String> NewExternalStringHandle(i::Isolate* isolate, |
- v8::String::ExternalStringResource* resource) { |
- i::Handle<i::String> result = |
- isolate->factory()->NewExternalStringFromTwoByte(resource); |
- return result; |
+static i::Handle<i::String> NewExternalStringHandle( |
+ i::Isolate* isolate, |
+ v8::String::ExternalStringResource* resource) { |
+ return isolate->factory()->NewExternalStringFromTwoByte(resource); |
} |
-i::Handle<i::String> NewExternalAsciiStringHandle(i::Isolate* isolate, |
- v8::String::ExternalAsciiStringResource* resource) { |
- i::Handle<i::String> result = |
- isolate->factory()->NewExternalStringFromAscii(resource); |
- return result; |
+static i::Handle<i::String> NewExternalAsciiStringHandle( |
+ i::Isolate* isolate, |
+ v8::String::ExternalAsciiStringResource* resource) { |
+ return isolate->factory()->NewExternalStringFromAscii(resource); |
} |
-bool RedirectToExternalString(i::Isolate* isolate, |
- i::Handle<i::String> parent, |
- i::Handle<i::String> external) { |
+static bool RedirectToExternalString(i::Isolate* isolate, |
+ i::Handle<i::String> parent, |
+ i::Handle<i::String> external) { |
if (parent->IsConsString()) { |
i::Handle<i::ConsString> cons = i::Handle<i::ConsString>::cast(parent); |
cons->set_first(*external); |
@@ -5506,8 +5476,8 @@ bool RedirectToExternalString(i::Isolate* isolate, |
Local<String> v8::String::NewExternal( |
- Isolate* isolate, |
- v8::String::ExternalStringResource* resource) { |
+ Isolate* isolate, |
+ v8::String::ExternalStringResource* resource) { |
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
EnsureInitializedForIsolate(i_isolate, "v8::String::NewExternal()"); |
LOG_API(i_isolate, "String::NewExternal"); |
@@ -5556,8 +5526,8 @@ bool v8::String::MakeExternal(v8::String::ExternalStringResource* resource) { |
Local<String> v8::String::NewExternal( |
- Isolate* isolate, |
- v8::String::ExternalAsciiStringResource* resource) { |
+ Isolate* isolate, |
+ v8::String::ExternalAsciiStringResource* resource) { |
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
EnsureInitializedForIsolate(i_isolate, "v8::String::NewExternal()"); |
LOG_API(i_isolate, "String::NewExternal"); |
@@ -5819,8 +5789,8 @@ Local<v8::String> v8::RegExp::GetSource() const { |
// Assert that the static flags cast in GetFlags is valid. |
-#define REGEXP_FLAG_ASSERT_EQ(api_flag, internal_flag) \ |
- STATIC_ASSERT(static_cast<int>(v8::RegExp::api_flag) == \ |
+#define REGEXP_FLAG_ASSERT_EQ(api_flag, internal_flag) \ |
+ STATIC_ASSERT(static_cast<int>(v8::RegExp::api_flag) == \ |
static_cast<int>(i::JSRegExp::internal_flag)) |
REGEXP_FLAG_ASSERT_EQ(kNone, NONE); |
REGEXP_FLAG_ASSERT_EQ(kGlobal, GLOBAL); |
@@ -5888,9 +5858,9 @@ bool v8::ArrayBuffer::IsExternal() const { |
v8::ArrayBuffer::Contents v8::ArrayBuffer::Externalize() { |
i::Handle<i::JSArrayBuffer> obj = Utils::OpenHandle(this); |
- ApiCheck(!obj->is_external(), |
- "v8::ArrayBuffer::Externalize", |
- "ArrayBuffer already externalized"); |
+ Utils::ApiCheck(!obj->is_external(), |
+ "v8::ArrayBuffer::Externalize", |
+ "ArrayBuffer already externalized"); |
obj->set_is_external(true); |
size_t byte_length = static_cast<size_t>(obj->byte_length()->Number()); |
Contents contents; |
@@ -5903,9 +5873,9 @@ v8::ArrayBuffer::Contents v8::ArrayBuffer::Externalize() { |
void v8::ArrayBuffer::Neuter() { |
i::Handle<i::JSArrayBuffer> obj = Utils::OpenHandle(this); |
i::Isolate* isolate = obj->GetIsolate(); |
- ApiCheck(obj->is_external(), |
- "v8::ArrayBuffer::Neuter", |
- "Only externalized ArrayBuffers can be neutered"); |
+ Utils::ApiCheck(obj->is_external(), |
+ "v8::ArrayBuffer::Neuter", |
+ "Only externalized ArrayBuffers can be neutered"); |
LOG_API(obj->GetIsolate(), "v8::ArrayBuffer::Neuter()"); |
ENTER_V8(isolate); |
@@ -5989,7 +5959,7 @@ static inline void SetupArrayBufferView( |
size_t byte_offset, |
size_t byte_length) { |
ASSERT(byte_offset + byte_length <= |
- static_cast<size_t>(buffer->byte_length()->Number())); |
+ static_cast<size_t>(buffer->byte_length()->Number())); |
obj->set_buffer(*buffer); |
@@ -5997,11 +5967,11 @@ static inline void SetupArrayBufferView( |
buffer->set_weak_first_view(*obj); |
i::Handle<i::Object> byte_offset_object = |
- isolate->factory()->NewNumberFromSize(byte_offset); |
+ isolate->factory()->NewNumberFromSize(byte_offset); |
obj->set_byte_offset(*byte_offset_object); |
i::Handle<i::Object> byte_length_object = |
- isolate->factory()->NewNumberFromSize(byte_length); |
+ isolate->factory()->NewNumberFromSize(byte_length); |
obj->set_byte_length(*byte_length_object); |
} |
@@ -6023,7 +5993,7 @@ i::Handle<i::JSTypedArray> NewTypedArray( |
isolate, obj, buffer, byte_offset, byte_length); |
i::Handle<i::Object> length_object = |
- isolate->factory()->NewNumberFromSize(length); |
+ isolate->factory()->NewNumberFromSize(length); |
obj->set_length(*length_object); |
i::Handle<i::ExternalArray> elements = |
@@ -6175,7 +6145,7 @@ bool V8::AddMessageListener(MessageCallback that, Handle<Value> data) { |
NeanderObject obj(isolate, 2); |
obj.set(0, *isolate->factory()->NewForeign(FUNCTION_ADDR(that))); |
obj.set(1, data.IsEmpty() ? isolate->heap()->undefined_value() |
- : *Utils::OpenHandle(*data)); |
+ : *Utils::OpenHandle(*data)); |
listeners.add(obj.value()); |
return true; |
} |
@@ -6201,9 +6171,9 @@ void V8::RemoveMessageListeners(MessageCallback that) { |
void V8::SetCaptureStackTraceForUncaughtExceptions( |
- bool capture, |
- int frame_limit, |
- StackTrace::StackTraceOptions options) { |
+ bool capture, |
+ int frame_limit, |
+ StackTrace::StackTraceOptions options) { |
i::Isolate::Current()->SetCaptureStackTraceForUncaughtExceptions( |
capture, |
frame_limit, |
@@ -6232,7 +6202,7 @@ void V8::SetAddHistogramSampleFunction(AddHistogramSampleCallback callback) { |
} |
void V8::SetFailedAccessCheckCallbackFunction( |
- FailedAccessCheckCallback callback) { |
+ FailedAccessCheckCallback callback) { |
i::Isolate* isolate = i::Isolate::Current(); |
isolate->SetFailedAccessCheckCallback(callback); |
} |
@@ -6466,9 +6436,9 @@ Isolate* Isolate::New() { |
void Isolate::Dispose() { |
i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this); |
- if (!ApiCheck(!isolate->IsInUse(), |
- "v8::Isolate::Dispose()", |
- "Disposing the isolate that is entered by a thread.")) { |
+ if (!Utils::ApiCheck(!isolate->IsInUse(), |
+ "v8::Isolate::Dispose()", |
+ "Disposing the isolate that is entered by a thread.")) { |
return; |
} |
isolate->TearDown(); |
@@ -7130,15 +7100,15 @@ SnapshotObjectId HeapSnapshot::GetMaxSnapshotJSObjectId() const { |
void HeapSnapshot::Serialize(OutputStream* stream, |
HeapSnapshot::SerializationFormat format) const { |
- ApiCheck(format == kJSON, |
- "v8::HeapSnapshot::Serialize", |
- "Unknown serialization format"); |
- ApiCheck(stream->GetOutputEncoding() == OutputStream::kAscii, |
- "v8::HeapSnapshot::Serialize", |
- "Unsupported output encoding"); |
- ApiCheck(stream->GetChunkSize() > 0, |
- "v8::HeapSnapshot::Serialize", |
- "Invalid stream chunk size"); |
+ Utils::ApiCheck(format == kJSON, |
+ "v8::HeapSnapshot::Serialize", |
+ "Unknown serialization format"); |
+ Utils::ApiCheck(stream->GetOutputEncoding() == OutputStream::kAscii, |
+ "v8::HeapSnapshot::Serialize", |
+ "Unsupported output encoding"); |
+ Utils::ApiCheck(stream->GetChunkSize() > 0, |
+ "v8::HeapSnapshot::Serialize", |
+ "Invalid stream chunk size"); |
i::HeapSnapshotJSONSerializer serializer(ToInternal(this)); |
serializer.Serialize(stream); |
} |