| 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 15623 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 15634 obj_clone->Set(foo_string, | 15634 obj_clone->Set(foo_string, |
| 15635 v8::String::NewFromUtf8(isolate, "Hello")); | 15635 v8::String::NewFromUtf8(isolate, "Hello")); |
| 15636 CHECK(!obj->Get(foo_string)->IsUndefined()); | 15636 CHECK(!obj->Get(foo_string)->IsUndefined()); |
| 15637 } | 15637 } |
| 15638 | 15638 |
| 15639 | 15639 |
| 15640 static void CheckElementValue(i::Isolate* isolate, | 15640 static void CheckElementValue(i::Isolate* isolate, |
| 15641 int expected, | 15641 int expected, |
| 15642 i::Handle<i::Object> obj, | 15642 i::Handle<i::Object> obj, |
| 15643 int offset) { | 15643 int offset) { |
| 15644 i::Object* element = *i::Object::GetElement(isolate, obj, offset); | 15644 i::Object* element = |
| 15645 *i::Object::GetElement(isolate, obj, offset).ToHandleChecked(); |
| 15645 CHECK_EQ(expected, i::Smi::cast(element)->value()); | 15646 CHECK_EQ(expected, i::Smi::cast(element)->value()); |
| 15646 } | 15647 } |
| 15647 | 15648 |
| 15648 | 15649 |
| 15649 THREADED_TEST(PixelArray) { | 15650 THREADED_TEST(PixelArray) { |
| 15650 LocalContext context; | 15651 LocalContext context; |
| 15651 i::Isolate* isolate = CcTest::i_isolate(); | 15652 i::Isolate* isolate = CcTest::i_isolate(); |
| 15652 i::Factory* factory = isolate->factory(); | 15653 i::Factory* factory = isolate->factory(); |
| 15653 v8::HandleScope scope(context->GetIsolate()); | 15654 v8::HandleScope scope(context->GetIsolate()); |
| 15654 const int kElementCount = 260; | 15655 const int kElementCount = 260; |
| (...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16271 // Check other boundary conditions, values and operations. | 16272 // Check other boundary conditions, values and operations. |
| 16272 result = CompileRun("for (var i = 0; i < 8; i++) {" | 16273 result = CompileRun("for (var i = 0; i < 8; i++) {" |
| 16273 " ext_array[7] = undefined;" | 16274 " ext_array[7] = undefined;" |
| 16274 "}" | 16275 "}" |
| 16275 "ext_array[7];"); | 16276 "ext_array[7];"); |
| 16276 CHECK_EQ(0, result->Int32Value()); | 16277 CHECK_EQ(0, result->Int32Value()); |
| 16277 if (array_type == v8::kExternalFloat64Array || | 16278 if (array_type == v8::kExternalFloat64Array || |
| 16278 array_type == v8::kExternalFloat32Array) { | 16279 array_type == v8::kExternalFloat32Array) { |
| 16279 CHECK_EQ(static_cast<int>(i::OS::nan_value()), | 16280 CHECK_EQ(static_cast<int>(i::OS::nan_value()), |
| 16280 static_cast<int>( | 16281 static_cast<int>( |
| 16281 i::Object::GetElement(isolate, jsobj, 7)->Number())); | 16282 i::Object::GetElement( |
| 16283 isolate, jsobj, 7).ToHandleChecked()->Number())); |
| 16282 } else { | 16284 } else { |
| 16283 CheckElementValue(isolate, 0, jsobj, 7); | 16285 CheckElementValue(isolate, 0, jsobj, 7); |
| 16284 } | 16286 } |
| 16285 | 16287 |
| 16286 result = CompileRun("for (var i = 0; i < 8; i++) {" | 16288 result = CompileRun("for (var i = 0; i < 8; i++) {" |
| 16287 " ext_array[6] = '2.3';" | 16289 " ext_array[6] = '2.3';" |
| 16288 "}" | 16290 "}" |
| 16289 "ext_array[6];"); | 16291 "ext_array[6];"); |
| 16290 CHECK_EQ(2, result->Int32Value()); | 16292 CHECK_EQ(2, result->Int32Value()); |
| 16291 CHECK_EQ(2, | 16293 CHECK_EQ(2, |
| 16292 static_cast<int>( | 16294 static_cast<int>( |
| 16293 i::Object::GetElement(isolate, jsobj, 6)->Number())); | 16295 i::Object::GetElement( |
| 16296 isolate, jsobj, 6).ToHandleChecked()->Number())); |
| 16294 | 16297 |
| 16295 if (array_type != v8::kExternalFloat32Array && | 16298 if (array_type != v8::kExternalFloat32Array && |
| 16296 array_type != v8::kExternalFloat64Array) { | 16299 array_type != v8::kExternalFloat64Array) { |
| 16297 // Though the specification doesn't state it, be explicit about | 16300 // Though the specification doesn't state it, be explicit about |
| 16298 // converting NaNs and +/-Infinity to zero. | 16301 // converting NaNs and +/-Infinity to zero. |
| 16299 result = CompileRun("for (var i = 0; i < 8; i++) {" | 16302 result = CompileRun("for (var i = 0; i < 8; i++) {" |
| 16300 " ext_array[i] = 5;" | 16303 " ext_array[i] = 5;" |
| 16301 "}" | 16304 "}" |
| 16302 "for (var i = 0; i < 8; i++) {" | 16305 "for (var i = 0; i < 8; i++) {" |
| 16303 " ext_array[i] = NaN;" | 16306 " ext_array[i] = NaN;" |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16563 } | 16566 } |
| 16564 | 16567 |
| 16565 v8::Handle<v8::Object> obj = v8::Object::New(context->GetIsolate()); | 16568 v8::Handle<v8::Object> obj = v8::Object::New(context->GetIsolate()); |
| 16566 i::Handle<i::JSObject> jsobj = v8::Utils::OpenHandle(*obj); | 16569 i::Handle<i::JSObject> jsobj = v8::Utils::OpenHandle(*obj); |
| 16567 // Set the elements to be the external array. | 16570 // Set the elements to be the external array. |
| 16568 obj->SetIndexedPropertiesToExternalArrayData(array_data, | 16571 obj->SetIndexedPropertiesToExternalArrayData(array_data, |
| 16569 array_type, | 16572 array_type, |
| 16570 kElementCount); | 16573 kElementCount); |
| 16571 CHECK_EQ(1, | 16574 CHECK_EQ(1, |
| 16572 static_cast<int>( | 16575 static_cast<int>( |
| 16573 i::Object::GetElement(isolate, jsobj, 1)->Number())); | 16576 i::Object::GetElement( |
| 16577 isolate, jsobj, 1).ToHandleChecked()->Number())); |
| 16574 | 16578 |
| 16575 ObjectWithExternalArrayTestHelper<ExternalArrayClass, ElementType>( | 16579 ObjectWithExternalArrayTestHelper<ExternalArrayClass, ElementType>( |
| 16576 context.local(), obj, kElementCount, array_type, low, high); | 16580 context.local(), obj, kElementCount, array_type, low, high); |
| 16577 | 16581 |
| 16578 v8::Handle<v8::Value> result; | 16582 v8::Handle<v8::Value> result; |
| 16579 | 16583 |
| 16580 // Test more complex manipulations which cause eax to contain values | 16584 // Test more complex manipulations which cause eax to contain values |
| 16581 // that won't be completely overwritten by loads from the arrays. | 16585 // that won't be completely overwritten by loads from the arrays. |
| 16582 // This catches bugs in the instructions used for the KeyedLoadIC | 16586 // This catches bugs in the instructions used for the KeyedLoadIC |
| 16583 // for byte and word types. | 16587 // for byte and word types. |
| (...skipping 5808 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 22392 "f.call(friend);"); | 22396 "f.call(friend);"); |
| 22393 CHECK_EQ(2, named_access_count); | 22397 CHECK_EQ(2, named_access_count); |
| 22394 | 22398 |
| 22395 // Test access using Object.setPrototypeOf reflective method. | 22399 // Test access using Object.setPrototypeOf reflective method. |
| 22396 named_access_count = 0; | 22400 named_access_count = 0; |
| 22397 CompileRun("Object.setPrototypeOf(friend, {});"); | 22401 CompileRun("Object.setPrototypeOf(friend, {});"); |
| 22398 CHECK_EQ(1, named_access_count); | 22402 CHECK_EQ(1, named_access_count); |
| 22399 CompileRun("Object.getPrototypeOf(friend);"); | 22403 CompileRun("Object.getPrototypeOf(friend);"); |
| 22400 CHECK_EQ(2, named_access_count); | 22404 CHECK_EQ(2, named_access_count); |
| 22401 } | 22405 } |
| OLD | NEW |