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 1992 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2003 v8::Context::FromSnapshot(isolate, 2).ToLocalChecked(); | 2003 v8::Context::FromSnapshot(isolate, 2).ToLocalChecked(); |
2004 v8::Context::Scope context_scope(context); | 2004 v8::Context::Scope context_scope(context); |
2005 ExpectUndefined("this.f"); | 2005 ExpectUndefined("this.f"); |
2006 } | 2006 } |
2007 } | 2007 } |
2008 | 2008 |
2009 isolate->Dispose(); | 2009 isolate->Dispose(); |
2010 delete[] blob.data; | 2010 delete[] blob.data; |
2011 } | 2011 } |
2012 | 2012 |
2013 static void SerializedCallback( | 2013 void SerializedCallback(const v8::FunctionCallbackInfo<v8::Value>& args) { |
2014 const v8::FunctionCallbackInfo<v8::Value>& args) { | |
2015 args.GetReturnValue().Set(v8_num(42)); | 2014 args.GetReturnValue().Set(v8_num(42)); |
2016 } | 2015 } |
2017 | 2016 |
2018 static void SerializedCallbackReplacement( | 2017 void SerializedCallbackReplacement( |
2019 const v8::FunctionCallbackInfo<v8::Value>& args) { | 2018 const v8::FunctionCallbackInfo<v8::Value>& args) { |
2020 args.GetReturnValue().Set(v8_num(1337)); | 2019 args.GetReturnValue().Set(v8_num(1337)); |
2021 } | 2020 } |
2022 | 2021 |
2023 intptr_t original_external_references[] = { | 2022 intptr_t original_external_references[] = { |
2024 reinterpret_cast<intptr_t>(SerializedCallback), 0}; | 2023 reinterpret_cast<intptr_t>(SerializedCallback), 0}; |
2025 | 2024 |
2026 intptr_t replaced_external_references[] = { | 2025 intptr_t replaced_external_references[] = { |
2027 reinterpret_cast<intptr_t>(SerializedCallbackReplacement), 0}; | 2026 reinterpret_cast<intptr_t>(SerializedCallbackReplacement), 0}; |
2028 | 2027 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2079 v8::Local<v8::Context> context = | 2078 v8::Local<v8::Context> context = |
2080 v8::Context::FromSnapshot(isolate, 0).ToLocalChecked(); | 2079 v8::Context::FromSnapshot(isolate, 0).ToLocalChecked(); |
2081 v8::Context::Scope context_scope(context); | 2080 v8::Context::Scope context_scope(context); |
2082 ExpectInt32("f()", 1337); | 2081 ExpectInt32("f()", 1337); |
2083 } | 2082 } |
2084 isolate->Dispose(); | 2083 isolate->Dispose(); |
2085 } | 2084 } |
2086 delete[] blob.data; | 2085 delete[] blob.data; |
2087 } | 2086 } |
2088 | 2087 |
| 2088 TEST(SnapshotCreatorUnknownExternalReferences) { |
| 2089 DisableTurbofan(); |
| 2090 v8::SnapshotCreator creator; |
| 2091 v8::Isolate* isolate = creator.GetIsolate(); |
| 2092 { |
| 2093 v8::HandleScope handle_scope(isolate); |
| 2094 v8::Local<v8::Context> context = v8::Context::New(isolate); |
| 2095 v8::Context::Scope context_scope(context); |
| 2096 |
| 2097 v8::Local<v8::FunctionTemplate> callback = |
| 2098 v8::FunctionTemplate::New(isolate, SerializedCallback); |
| 2099 v8::Local<v8::Value> function = |
| 2100 callback->GetFunction(context).ToLocalChecked(); |
| 2101 CHECK(context->Global()->Set(context, v8_str("f"), function).FromJust()); |
| 2102 ExpectInt32("f()", 42); |
| 2103 |
| 2104 CHECK_EQ(0, creator.AddContext(context)); |
| 2105 } |
| 2106 v8::StartupData blob = |
| 2107 creator.CreateBlob(v8::SnapshotCreator::FunctionCodeHandling::kClear); |
| 2108 |
| 2109 delete[] blob.data; |
| 2110 } |
| 2111 |
2089 TEST(SnapshotCreatorTemplates) { | 2112 TEST(SnapshotCreatorTemplates) { |
2090 DisableTurbofan(); | 2113 DisableTurbofan(); |
2091 v8::StartupData blob; | 2114 v8::StartupData blob; |
2092 { | 2115 { |
2093 v8::SnapshotCreator creator(original_external_references); | 2116 v8::SnapshotCreator creator(original_external_references); |
2094 v8::Isolate* isolate = creator.GetIsolate(); | 2117 v8::Isolate* isolate = creator.GetIsolate(); |
2095 { | 2118 { |
2096 v8::HandleScope handle_scope(isolate); | 2119 v8::HandleScope handle_scope(isolate); |
2097 v8::ExtensionConfiguration* no_extension = nullptr; | 2120 v8::ExtensionConfiguration* no_extension = nullptr; |
2098 v8::Local<v8::ObjectTemplate> global_template = | 2121 v8::Local<v8::ObjectTemplate> global_template = |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2178 } | 2201 } |
2179 delete[] blob.data; | 2202 delete[] blob.data; |
2180 } | 2203 } |
2181 | 2204 |
2182 TEST(SerializationMemoryStats) { | 2205 TEST(SerializationMemoryStats) { |
2183 FLAG_profile_deserialization = true; | 2206 FLAG_profile_deserialization = true; |
2184 FLAG_always_opt = false; | 2207 FLAG_always_opt = false; |
2185 v8::StartupData blob = v8::V8::CreateSnapshotDataBlob(); | 2208 v8::StartupData blob = v8::V8::CreateSnapshotDataBlob(); |
2186 delete[] blob.data; | 2209 delete[] blob.data; |
2187 } | 2210 } |
OLD | NEW |