OLD | NEW |
1 // Copyright 2007-2010 the V8 project authors. All rights reserved. | 1 // Copyright 2007-2010 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 928 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
939 | 939 |
940 Handle<JSFunction> copy_fun = | 940 Handle<JSFunction> copy_fun = |
941 isolate->factory()->NewFunctionFromSharedFunctionInfo( | 941 isolate->factory()->NewFunctionFromSharedFunctionInfo( |
942 copy, isolate->native_context()); | 942 copy, isolate->native_context()); |
943 | 943 |
944 USE(Execution::Call(isolate, copy_fun, global, 0, NULL)); | 944 USE(Execution::Call(isolate, copy_fun, global, 0, NULL)); |
945 | 945 |
946 CHECK_EQ(600000 + 700000, CompileRun("(a + b).length")->Int32Value()); | 946 CHECK_EQ(600000 + 700000, CompileRun("(a + b).length")->Int32Value()); |
947 CHECK_EQ(500000 + 600000, CompileRun("(b + c).length")->Int32Value()); | 947 CHECK_EQ(500000 + 600000, CompileRun("(b + c).length")->Int32Value()); |
948 Heap* heap = isolate->heap(); | 948 Heap* heap = isolate->heap(); |
949 CHECK(heap->InSpace(*v8::Utils::OpenHandle(*CompileRun("a")->ToString()), | 949 CHECK(heap->InSpace( |
950 OLD_DATA_SPACE)); | 950 *v8::Utils::OpenHandle(*CompileRun("a")->ToString(CcTest::isolate())), |
951 CHECK(heap->InSpace(*v8::Utils::OpenHandle(*CompileRun("b")->ToString()), | 951 OLD_DATA_SPACE)); |
952 OLD_DATA_SPACE)); | 952 CHECK(heap->InSpace( |
953 CHECK(heap->InSpace(*v8::Utils::OpenHandle(*CompileRun("c")->ToString()), | 953 *v8::Utils::OpenHandle(*CompileRun("b")->ToString(CcTest::isolate())), |
954 OLD_DATA_SPACE)); | 954 OLD_DATA_SPACE)); |
| 955 CHECK(heap->InSpace( |
| 956 *v8::Utils::OpenHandle(*CompileRun("c")->ToString(CcTest::isolate())), |
| 957 OLD_DATA_SPACE)); |
955 | 958 |
956 delete cache; | 959 delete cache; |
957 source_a.Dispose(); | 960 source_a.Dispose(); |
958 source_b.Dispose(); | 961 source_b.Dispose(); |
959 source_c.Dispose(); | 962 source_c.Dispose(); |
960 } | 963 } |
961 | 964 |
962 | 965 |
963 class SerializerOneByteResource | 966 class SerializerOneByteResource |
964 : public v8::String::ExternalOneByteStringResource { | 967 : public v8::String::ExternalOneByteStringResource { |
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1201 isolate1, &source, v8::ScriptCompiler::kProduceCodeCache); | 1204 isolate1, &source, v8::ScriptCompiler::kProduceCodeCache); |
1202 const v8::ScriptCompiler::CachedData* data = source.GetCachedData(); | 1205 const v8::ScriptCompiler::CachedData* data = source.GetCachedData(); |
1203 CHECK(data); | 1206 CHECK(data); |
1204 // Persist cached data. | 1207 // Persist cached data. |
1205 uint8_t* buffer = NewArray<uint8_t>(data->length); | 1208 uint8_t* buffer = NewArray<uint8_t>(data->length); |
1206 MemCopy(buffer, data->data, data->length); | 1209 MemCopy(buffer, data->data, data->length); |
1207 cache = new v8::ScriptCompiler::CachedData( | 1210 cache = new v8::ScriptCompiler::CachedData( |
1208 buffer, data->length, v8::ScriptCompiler::CachedData::BufferOwned); | 1211 buffer, data->length, v8::ScriptCompiler::CachedData::BufferOwned); |
1209 | 1212 |
1210 v8::Local<v8::Value> result = script->BindToCurrentContext()->Run(); | 1213 v8::Local<v8::Value> result = script->BindToCurrentContext()->Run(); |
1211 CHECK(result->ToString()->Equals(v8_str("abcdef"))); | 1214 CHECK(result->ToString(isolate1)->Equals(v8_str("abcdef"))); |
1212 } | 1215 } |
1213 isolate1->Dispose(); | 1216 isolate1->Dispose(); |
1214 | 1217 |
1215 v8::Isolate* isolate2 = v8::Isolate::New(); | 1218 v8::Isolate* isolate2 = v8::Isolate::New(); |
1216 isolate2->SetJitCodeEventHandler(v8::kJitCodeEventDefault, | 1219 isolate2->SetJitCodeEventHandler(v8::kJitCodeEventDefault, |
1217 SerializerCodeEventListener); | 1220 SerializerCodeEventListener); |
1218 toplevel_test_code_event_found = false; | 1221 toplevel_test_code_event_found = false; |
1219 { | 1222 { |
1220 v8::Isolate::Scope iscope(isolate2); | 1223 v8::Isolate::Scope iscope(isolate2); |
1221 v8::HandleScope scope(isolate2); | 1224 v8::HandleScope scope(isolate2); |
1222 v8::Local<v8::Context> context = v8::Context::New(isolate2); | 1225 v8::Local<v8::Context> context = v8::Context::New(isolate2); |
1223 v8::Context::Scope context_scope(context); | 1226 v8::Context::Scope context_scope(context); |
1224 | 1227 |
1225 v8::Local<v8::String> source_str = v8_str(source); | 1228 v8::Local<v8::String> source_str = v8_str(source); |
1226 v8::ScriptOrigin origin(v8_str("test")); | 1229 v8::ScriptOrigin origin(v8_str("test")); |
1227 v8::ScriptCompiler::Source source(source_str, origin, cache); | 1230 v8::ScriptCompiler::Source source(source_str, origin, cache); |
1228 v8::Local<v8::UnboundScript> script; | 1231 v8::Local<v8::UnboundScript> script; |
1229 { | 1232 { |
1230 DisallowCompilation no_compile(reinterpret_cast<Isolate*>(isolate2)); | 1233 DisallowCompilation no_compile(reinterpret_cast<Isolate*>(isolate2)); |
1231 script = v8::ScriptCompiler::CompileUnbound( | 1234 script = v8::ScriptCompiler::CompileUnbound( |
1232 isolate2, &source, v8::ScriptCompiler::kConsumeCodeCache); | 1235 isolate2, &source, v8::ScriptCompiler::kConsumeCodeCache); |
1233 } | 1236 } |
1234 CHECK(!cache->rejected); | 1237 CHECK(!cache->rejected); |
1235 v8::Local<v8::Value> result = script->BindToCurrentContext()->Run(); | 1238 v8::Local<v8::Value> result = script->BindToCurrentContext()->Run(); |
1236 CHECK(result->ToString()->Equals(v8_str("abcdef"))); | 1239 CHECK(result->ToString(isolate2)->Equals(v8_str("abcdef"))); |
1237 } | 1240 } |
1238 DCHECK(toplevel_test_code_event_found); | 1241 DCHECK(toplevel_test_code_event_found); |
1239 isolate2->Dispose(); | 1242 isolate2->Dispose(); |
1240 } | 1243 } |
1241 | 1244 |
1242 | 1245 |
1243 TEST(SerializeWithHarmonyScoping) { | 1246 TEST(SerializeWithHarmonyScoping) { |
1244 FLAG_serialize_toplevel = true; | 1247 FLAG_serialize_toplevel = true; |
1245 FLAG_harmony_scoping = true; | 1248 FLAG_harmony_scoping = true; |
1246 | 1249 |
(...skipping 20 matching lines...) Expand all Loading... |
1267 isolate1, &source, v8::ScriptCompiler::kProduceCodeCache); | 1270 isolate1, &source, v8::ScriptCompiler::kProduceCodeCache); |
1268 const v8::ScriptCompiler::CachedData* data = source.GetCachedData(); | 1271 const v8::ScriptCompiler::CachedData* data = source.GetCachedData(); |
1269 CHECK(data); | 1272 CHECK(data); |
1270 // Persist cached data. | 1273 // Persist cached data. |
1271 uint8_t* buffer = NewArray<uint8_t>(data->length); | 1274 uint8_t* buffer = NewArray<uint8_t>(data->length); |
1272 MemCopy(buffer, data->data, data->length); | 1275 MemCopy(buffer, data->data, data->length); |
1273 cache = new v8::ScriptCompiler::CachedData( | 1276 cache = new v8::ScriptCompiler::CachedData( |
1274 buffer, data->length, v8::ScriptCompiler::CachedData::BufferOwned); | 1277 buffer, data->length, v8::ScriptCompiler::CachedData::BufferOwned); |
1275 | 1278 |
1276 v8::Local<v8::Value> result = script->BindToCurrentContext()->Run(); | 1279 v8::Local<v8::Value> result = script->BindToCurrentContext()->Run(); |
1277 CHECK(result->ToString()->Equals(v8_str("XY"))); | 1280 CHECK(result->ToString(isolate1)->Equals(v8_str("XY"))); |
1278 } | 1281 } |
1279 isolate1->Dispose(); | 1282 isolate1->Dispose(); |
1280 | 1283 |
1281 v8::Isolate* isolate2 = v8::Isolate::New(); | 1284 v8::Isolate* isolate2 = v8::Isolate::New(); |
1282 { | 1285 { |
1283 v8::Isolate::Scope iscope(isolate2); | 1286 v8::Isolate::Scope iscope(isolate2); |
1284 v8::HandleScope scope(isolate2); | 1287 v8::HandleScope scope(isolate2); |
1285 v8::Local<v8::Context> context = v8::Context::New(isolate2); | 1288 v8::Local<v8::Context> context = v8::Context::New(isolate2); |
1286 v8::Context::Scope context_scope(context); | 1289 v8::Context::Scope context_scope(context); |
1287 | 1290 |
1288 // Reverse order of prior running scripts. | 1291 // Reverse order of prior running scripts. |
1289 CompileRun(source2); | 1292 CompileRun(source2); |
1290 CompileRun(source1); | 1293 CompileRun(source1); |
1291 | 1294 |
1292 v8::Local<v8::String> source_str = v8_str(source3); | 1295 v8::Local<v8::String> source_str = v8_str(source3); |
1293 v8::ScriptOrigin origin(v8_str("test")); | 1296 v8::ScriptOrigin origin(v8_str("test")); |
1294 v8::ScriptCompiler::Source source(source_str, origin, cache); | 1297 v8::ScriptCompiler::Source source(source_str, origin, cache); |
1295 v8::Local<v8::UnboundScript> script; | 1298 v8::Local<v8::UnboundScript> script; |
1296 { | 1299 { |
1297 DisallowCompilation no_compile(reinterpret_cast<Isolate*>(isolate2)); | 1300 DisallowCompilation no_compile(reinterpret_cast<Isolate*>(isolate2)); |
1298 script = v8::ScriptCompiler::CompileUnbound( | 1301 script = v8::ScriptCompiler::CompileUnbound( |
1299 isolate2, &source, v8::ScriptCompiler::kConsumeCodeCache); | 1302 isolate2, &source, v8::ScriptCompiler::kConsumeCodeCache); |
1300 } | 1303 } |
1301 v8::Local<v8::Value> result = script->BindToCurrentContext()->Run(); | 1304 v8::Local<v8::Value> result = script->BindToCurrentContext()->Run(); |
1302 CHECK(result->ToString()->Equals(v8_str("XY"))); | 1305 CHECK(result->ToString(isolate2)->Equals(v8_str("XY"))); |
1303 } | 1306 } |
1304 isolate2->Dispose(); | 1307 isolate2->Dispose(); |
1305 } | 1308 } |
OLD | NEW |