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 1864 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1875 RelocIterator rit2(copy->code(), 1 << RelocInfo::CELL); | 1875 RelocIterator rit2(copy->code(), 1 << RelocInfo::CELL); |
1876 CHECK(rit2.rinfo()->target_cell()->IsCell()); | 1876 CHECK(rit2.rinfo()->target_cell()->IsCell()); |
1877 Handle<Cell> cell(rit2.rinfo()->target_cell()); | 1877 Handle<Cell> cell(rit2.rinfo()->target_cell()); |
1878 CHECK(cell->value()->IsHeapNumber()); | 1878 CHECK(cell->value()->IsHeapNumber()); |
1879 CHECK_EQ(0.3, HeapNumber::cast(cell->value())->value()); | 1879 CHECK_EQ(0.3, HeapNumber::cast(cell->value())->value()); |
1880 | 1880 |
1881 delete script_data; | 1881 delete script_data; |
1882 } | 1882 } |
1883 #endif // V8_TARGET_ARCH_X64 | 1883 #endif // V8_TARGET_ARCH_X64 |
1884 | 1884 |
1885 TEST(SnapshotCreatorMultipleContexts) { | |
1886 v8::StartupData blob; | |
1887 { | |
1888 v8::SnapshotCreator creator; | |
1889 v8::Isolate* isolate = creator.GetIsolate(); | |
1890 { | |
1891 v8::HandleScope handle_scope(isolate); | |
1892 v8::Local<v8::Context> context = v8::Context::New(isolate); | |
1893 v8::Context::Scope context_scope(context); | |
1894 CompileRun("var f = function() { return 1; }"); | |
1895 CHECK_EQ(0, creator.AddContext(context)); | |
1896 } | |
1897 { | |
1898 v8::HandleScope handle_scope(isolate); | |
1899 v8::Local<v8::Context> context = v8::Context::New(isolate); | |
1900 v8::Context::Scope context_scope(context); | |
1901 CompileRun("var f = function() { return 2; }"); | |
1902 CHECK_EQ(1, creator.AddContext(context)); | |
1903 } | |
1904 { | |
1905 v8::HandleScope handle_scope(isolate); | |
1906 v8::Local<v8::Context> context = v8::Context::New(isolate); | |
1907 CHECK_EQ(2, creator.AddContext(context)); | |
1908 } | |
1909 blob = | |
1910 creator.CreateBlob(v8::SnapshotCreator::FunctionCodeHandling::kClear); | |
1911 } | |
1912 | |
1913 v8::Isolate::CreateParams params; | |
1914 params.snapshot_blob = &blob; | |
1915 params.array_buffer_allocator = CcTest::array_buffer_allocator(); | |
1916 v8::Isolate* isolate = v8::Isolate::New(params); | |
1917 { | |
1918 v8::Isolate::Scope isolate_scope(isolate); | |
1919 v8::ExtensionConfiguration* no_extension = nullptr; | |
1920 v8::Local<v8::ObjectTemplate> no_template = v8::Local<v8::ObjectTemplate>(); | |
1921 v8::Local<v8::Value> no_object = v8::Local<v8::Value>(); | |
1922 { | |
1923 v8::HandleScope handle_scope(isolate); | |
1924 v8::Local<v8::Context> context = | |
1925 v8::Context::New(isolate, no_extension, no_template, no_object, 0); | |
1926 v8::Context::Scope context_scope(context); | |
1927 ExpectInt32("f()", 1); | |
1928 } | |
1929 { | |
1930 v8::HandleScope handle_scope(isolate); | |
1931 v8::Local<v8::Context> context = | |
1932 v8::Context::New(isolate, no_extension, no_template, no_object, 1); | |
1933 v8::Context::Scope context_scope(context); | |
1934 ExpectInt32("f()", 2); | |
1935 } | |
1936 { | |
1937 v8::HandleScope handle_scope(isolate); | |
1938 v8::Local<v8::Context> context = | |
1939 v8::Context::New(isolate, no_extension, no_template, no_object, 2); | |
vogelheim
2016/06/13 16:20:20
Hrmm.... so requesting context snapshot N+1 is the
Yang
2016/06/14 11:45:30
No... We added three contexts, so loading context
| |
1940 v8::Context::Scope context_scope(context); | |
1941 ExpectUndefined("this.f"); | |
1942 } | |
1943 } | |
1944 | |
1945 isolate->Dispose(); | |
1946 delete blob.data; | |
1947 } | |
1948 | |
1885 TEST(SerializationMemoryStats) { | 1949 TEST(SerializationMemoryStats) { |
1886 FLAG_profile_deserialization = true; | 1950 FLAG_profile_deserialization = true; |
1887 FLAG_always_opt = false; | 1951 FLAG_always_opt = false; |
1888 v8::StartupData blob = v8::V8::CreateSnapshotDataBlob(); | 1952 v8::StartupData blob = v8::V8::CreateSnapshotDataBlob(); |
1889 delete[] blob.data; | 1953 delete[] blob.data; |
1890 } | 1954 } |
OLD | NEW |