| Index: test/cctest/test-api.cc
|
| diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
|
| index 226d01db62955e0b76d91c14bb89b9fe245a8f30..6f5c841d8149496711db9fe99b1124349dd7a41c 100644
|
| --- a/test/cctest/test-api.cc
|
| +++ b/test/cctest/test-api.cc
|
| @@ -25,6 +25,9 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| +// We want to test our deprecated API entries, too.
|
| +#define V8_DISABLE_DEPRECATIONS 1
|
| +
|
| #include <limits.h>
|
|
|
| #ifndef WIN32
|
| @@ -884,7 +887,7 @@ THREADED_TEST(FunctionTemplateSetLength) {
|
|
|
| static void* expected_ptr;
|
| static v8::Handle<v8::Value> callback(const v8::Arguments& args) {
|
| - void* ptr = v8::External::Cast(*args.Data())->Value();
|
| + void* ptr = v8::External::Unwrap(args.Data());
|
| CHECK_EQ(expected_ptr, ptr);
|
| return v8::True();
|
| }
|
| @@ -894,7 +897,7 @@ static void TestExternalPointerWrapping() {
|
| v8::HandleScope scope;
|
| LocalContext env;
|
|
|
| - v8::Handle<v8::Value> data = v8::External::New(expected_ptr);
|
| + v8::Handle<v8::Value> data = v8::External::Wrap(expected_ptr);
|
|
|
| v8::Handle<v8::Object> obj = v8::Object::New();
|
| obj->Set(v8_str("func"),
|
| @@ -2022,12 +2025,82 @@ THREADED_TEST(GlobalObjectInternalFields) {
|
| }
|
|
|
|
|
| +THREADED_TEST(InternalFieldsNativePointers) {
|
| + v8::HandleScope scope;
|
| + LocalContext env;
|
| +
|
| + Local<v8::FunctionTemplate> templ = v8::FunctionTemplate::New();
|
| + Local<v8::ObjectTemplate> instance_templ = templ->InstanceTemplate();
|
| + instance_templ->SetInternalFieldCount(1);
|
| + Local<v8::Object> obj = templ->GetFunction()->NewInstance();
|
| + CHECK_EQ(1, obj->InternalFieldCount());
|
| + CHECK(obj->GetPointerFromInternalField(0) == NULL);
|
| +
|
| + char* data = new char[100];
|
| +
|
| + void* aligned = data;
|
| + CHECK_EQ(0, static_cast<int>(reinterpret_cast<uintptr_t>(aligned) & 0x1));
|
| + void* unaligned = data + 1;
|
| + CHECK_EQ(1, static_cast<int>(reinterpret_cast<uintptr_t>(unaligned) & 0x1));
|
| +
|
| + // Check reading and writing aligned pointers.
|
| + obj->SetPointerInInternalField(0, aligned);
|
| + HEAP->CollectAllGarbage(i::Heap::kNoGCFlags);
|
| + CHECK_EQ(aligned, obj->GetPointerFromInternalField(0));
|
| +
|
| + // Check reading and writing unaligned pointers.
|
| + obj->SetPointerInInternalField(0, unaligned);
|
| + HEAP->CollectAllGarbage(i::Heap::kNoGCFlags);
|
| + CHECK_EQ(unaligned, obj->GetPointerFromInternalField(0));
|
| +
|
| + delete[] data;
|
| +}
|
| +
|
| +
|
| +THREADED_TEST(InternalFieldsNativePointersAndExternal) {
|
| + v8::HandleScope scope;
|
| + LocalContext env;
|
| +
|
| + Local<v8::FunctionTemplate> templ = v8::FunctionTemplate::New();
|
| + Local<v8::ObjectTemplate> instance_templ = templ->InstanceTemplate();
|
| + instance_templ->SetInternalFieldCount(1);
|
| + Local<v8::Object> obj = templ->GetFunction()->NewInstance();
|
| + CHECK_EQ(1, obj->InternalFieldCount());
|
| + CHECK(obj->GetPointerFromInternalField(0) == NULL);
|
| +
|
| + char* data = new char[100];
|
| +
|
| + void* aligned = data;
|
| + CHECK_EQ(0, static_cast<int>(reinterpret_cast<uintptr_t>(aligned) & 0x1));
|
| + void* unaligned = data + 1;
|
| + CHECK_EQ(1, static_cast<int>(reinterpret_cast<uintptr_t>(unaligned) & 0x1));
|
| +
|
| + obj->SetPointerInInternalField(0, aligned);
|
| + HEAP->CollectAllGarbage(i::Heap::kNoGCFlags);
|
| + CHECK_EQ(aligned, v8::External::Unwrap(obj->GetInternalField(0)));
|
| +
|
| + obj->SetPointerInInternalField(0, unaligned);
|
| + HEAP->CollectAllGarbage(i::Heap::kNoGCFlags);
|
| + CHECK_EQ(unaligned, v8::External::Unwrap(obj->GetInternalField(0)));
|
| +
|
| + obj->SetInternalField(0, v8::External::Wrap(aligned));
|
| + HEAP->CollectAllGarbage(i::Heap::kNoGCFlags);
|
| + CHECK_EQ(aligned, obj->GetPointerFromInternalField(0));
|
| +
|
| + obj->SetInternalField(0, v8::External::Wrap(unaligned));
|
| + HEAP->CollectAllGarbage(i::Heap::kNoGCFlags);
|
| + CHECK_EQ(unaligned, obj->GetPointerFromInternalField(0));
|
| +
|
| + delete[] data;
|
| +}
|
| +
|
| +
|
| static void CheckAlignedPointerInInternalField(Handle<v8::Object> obj,
|
| void* value) {
|
| CHECK_EQ(0, static_cast<int>(reinterpret_cast<uintptr_t>(value) & 0x1));
|
| - obj->SetAlignedPointerInInternalField(0, value);
|
| + obj->SetPointerInInternalField(0, value);
|
| HEAP->CollectAllGarbage(i::Heap::kNoGCFlags);
|
| - CHECK_EQ(value, obj->GetAlignedPointerFromInternalField(0));
|
| + CHECK_EQ(value, obj->GetPointerFromInternalField(0));
|
| }
|
|
|
|
|
| @@ -2282,18 +2355,18 @@ THREADED_TEST(External) {
|
|
|
| // Make sure unaligned pointers are wrapped properly.
|
| char* data = i::StrDup("0123456789");
|
| - Local<v8::Value> zero = v8::External::New(&data[0]);
|
| - Local<v8::Value> one = v8::External::New(&data[1]);
|
| - Local<v8::Value> two = v8::External::New(&data[2]);
|
| - Local<v8::Value> three = v8::External::New(&data[3]);
|
| + Local<v8::Value> zero = v8::External::Wrap(&data[0]);
|
| + Local<v8::Value> one = v8::External::Wrap(&data[1]);
|
| + Local<v8::Value> two = v8::External::Wrap(&data[2]);
|
| + Local<v8::Value> three = v8::External::Wrap(&data[3]);
|
|
|
| - char* char_ptr = reinterpret_cast<char*>(v8::External::Cast(*zero)->Value());
|
| + char* char_ptr = reinterpret_cast<char*>(v8::External::Unwrap(zero));
|
| CHECK_EQ('0', *char_ptr);
|
| - char_ptr = reinterpret_cast<char*>(v8::External::Cast(*one)->Value());
|
| + char_ptr = reinterpret_cast<char*>(v8::External::Unwrap(one));
|
| CHECK_EQ('1', *char_ptr);
|
| - char_ptr = reinterpret_cast<char*>(v8::External::Cast(*two)->Value());
|
| + char_ptr = reinterpret_cast<char*>(v8::External::Unwrap(two));
|
| CHECK_EQ('2', *char_ptr);
|
| - char_ptr = reinterpret_cast<char*>(v8::External::Cast(*three)->Value());
|
| + char_ptr = reinterpret_cast<char*>(v8::External::Unwrap(three));
|
| CHECK_EQ('3', *char_ptr);
|
| i::DeleteArray(data);
|
| }
|
| @@ -6220,10 +6293,8 @@ static void Utf16Helper(
|
| Local<v8::String>::Cast(a->Get(i));
|
| Local<v8::Number> expected_len =
|
| Local<v8::Number>::Cast(alens->Get(i));
|
| -#ifndef ENABLE_LATIN_1
|
| CHECK_EQ(expected_len->Value() != string->Length(),
|
| string->MayContainNonAscii());
|
| -#endif
|
| int length = GetUtf8Length(string);
|
| CHECK_EQ(static_cast<int>(expected_len->Value()), length);
|
| }
|
| @@ -9833,8 +9904,7 @@ THREADED_TEST(InterceptorCallICCachedFromGlobal) {
|
| static v8::Handle<Value> InterceptorCallICFastApi(Local<String> name,
|
| const AccessorInfo& info) {
|
| ApiTestFuzzer::Fuzz();
|
| - int* call_count =
|
| - reinterpret_cast<int*>(v8::External::Cast(*info.Data())->Value());
|
| + int* call_count = reinterpret_cast<int*>(v8::External::Unwrap(info.Data()));
|
| ++(*call_count);
|
| if ((*call_count) % 20 == 0) {
|
| HEAP->CollectAllGarbage(i::Heap::kNoGCFlags);
|
| @@ -9993,7 +10063,7 @@ THREADED_TEST(InterceptorCallICFastApi_TrivialSignature) {
|
| v8::Handle<v8::ObjectTemplate> templ = fun_templ->InstanceTemplate();
|
| templ->SetNamedPropertyHandler(InterceptorCallICFastApi,
|
| NULL, NULL, NULL, NULL,
|
| - v8::External::New(&interceptor_call_count));
|
| + v8::External::Wrap(&interceptor_call_count));
|
| LocalContext context;
|
| v8::Handle<v8::Function> fun = fun_templ->GetFunction();
|
| GenerateSomeGarbage();
|
| @@ -10021,7 +10091,7 @@ THREADED_TEST(InterceptorCallICFastApi_SimpleSignature) {
|
| v8::Handle<v8::ObjectTemplate> templ = fun_templ->InstanceTemplate();
|
| templ->SetNamedPropertyHandler(InterceptorCallICFastApi,
|
| NULL, NULL, NULL, NULL,
|
| - v8::External::New(&interceptor_call_count));
|
| + v8::External::Wrap(&interceptor_call_count));
|
| LocalContext context;
|
| v8::Handle<v8::Function> fun = fun_templ->GetFunction();
|
| GenerateSomeGarbage();
|
| @@ -10052,7 +10122,7 @@ THREADED_TEST(InterceptorCallICFastApi_SimpleSignature_Miss1) {
|
| v8::Handle<v8::ObjectTemplate> templ = fun_templ->InstanceTemplate();
|
| templ->SetNamedPropertyHandler(InterceptorCallICFastApi,
|
| NULL, NULL, NULL, NULL,
|
| - v8::External::New(&interceptor_call_count));
|
| + v8::External::Wrap(&interceptor_call_count));
|
| LocalContext context;
|
| v8::Handle<v8::Function> fun = fun_templ->GetFunction();
|
| GenerateSomeGarbage();
|
| @@ -10089,7 +10159,7 @@ THREADED_TEST(InterceptorCallICFastApi_SimpleSignature_Miss2) {
|
| v8::Handle<v8::ObjectTemplate> templ = fun_templ->InstanceTemplate();
|
| templ->SetNamedPropertyHandler(InterceptorCallICFastApi,
|
| NULL, NULL, NULL, NULL,
|
| - v8::External::New(&interceptor_call_count));
|
| + v8::External::Wrap(&interceptor_call_count));
|
| LocalContext context;
|
| v8::Handle<v8::Function> fun = fun_templ->GetFunction();
|
| GenerateSomeGarbage();
|
| @@ -10126,7 +10196,7 @@ THREADED_TEST(InterceptorCallICFastApi_SimpleSignature_Miss3) {
|
| v8::Handle<v8::ObjectTemplate> templ = fun_templ->InstanceTemplate();
|
| templ->SetNamedPropertyHandler(InterceptorCallICFastApi,
|
| NULL, NULL, NULL, NULL,
|
| - v8::External::New(&interceptor_call_count));
|
| + v8::External::Wrap(&interceptor_call_count));
|
| LocalContext context;
|
| v8::Handle<v8::Function> fun = fun_templ->GetFunction();
|
| GenerateSomeGarbage();
|
| @@ -10166,7 +10236,7 @@ THREADED_TEST(InterceptorCallICFastApi_SimpleSignature_TypeError) {
|
| v8::Handle<v8::ObjectTemplate> templ = fun_templ->InstanceTemplate();
|
| templ->SetNamedPropertyHandler(InterceptorCallICFastApi,
|
| NULL, NULL, NULL, NULL,
|
| - v8::External::New(&interceptor_call_count));
|
| + v8::External::Wrap(&interceptor_call_count));
|
| LocalContext context;
|
| v8::Handle<v8::Function> fun = fun_templ->GetFunction();
|
| GenerateSomeGarbage();
|
| @@ -12803,10 +12873,8 @@ THREADED_TEST(MorphCompositeStringTest) {
|
| "var slice = lhs.substring(1, lhs.length - 1);"
|
| "var slice_on_cons = (lhs + rhs).substring(1, lhs.length *2 - 1);");
|
|
|
| -#ifndef ENABLE_LATIN_1
|
| CHECK(!lhs->MayContainNonAscii());
|
| CHECK(!rhs->MayContainNonAscii());
|
| -#endif
|
|
|
| MorphAString(*v8::Utils::OpenHandle(*lhs), &ascii_resource, &uc16_resource);
|
| MorphAString(*v8::Utils::OpenHandle(*rhs), &ascii_resource, &uc16_resource);
|
| @@ -15404,7 +15472,7 @@ TEST(Regress528) {
|
|
|
| context->Enter();
|
| Local<v8::String> obj = v8::String::New("");
|
| - context->SetEmbedderData(0, obj);
|
| + context->SetData(obj);
|
| CompileRun(source_simple);
|
| context->Exit();
|
| }
|
|
|