Fix external string test.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@773 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
96d15ef6b4
commit
954bda3c46
@ -5237,7 +5237,8 @@ static String::ExternalStringResource* SymbolCallback(const char* chars,
|
||||
|
||||
static v8::Handle<Value> ExternalSymbolGetter(Local<String> name,
|
||||
const AccessorInfo& info) {
|
||||
CHECK(name->IsExternal());
|
||||
ApiTestFuzzer::Fuzz();
|
||||
CHECK(!name->Equals(v8_str("externalSymbol722")) || name->IsExternal()); CHECK(name->IsExternal());
|
||||
return v8::True();
|
||||
}
|
||||
|
||||
@ -5245,7 +5246,8 @@ static v8::Handle<Value> ExternalSymbolGetter(Local<String> name,
|
||||
static void ExternalSymbolSetter(Local<String> name,
|
||||
Local<Value> value,
|
||||
const AccessorInfo&) {
|
||||
CHECK(name->IsExternal());
|
||||
ApiTestFuzzer::Fuzz();
|
||||
CHECK(!name->Equals(v8_str("externalSymbol722")) || name->IsExternal());
|
||||
}
|
||||
|
||||
|
||||
@ -5255,12 +5257,20 @@ THREADED_TEST(ExternalSymbols) {
|
||||
v8::HandleScope scope;
|
||||
LocalContext context;
|
||||
Local<ObjectTemplate> templ = ObjectTemplate::New();
|
||||
templ->SetAccessor(v8_str("x"), ExternalSymbolGetter, ExternalSymbolSetter);
|
||||
context->Global()->Set(v8_str("obj"), templ->NewInstance());
|
||||
Local<Value> value = CompileRun("var o = { x: 42 }; o.x");
|
||||
// Use a bizare name so that the name does not clash with names used
|
||||
// in natives files. If running with snapshots enabled, variable
|
||||
// names used in the native files will be normal symbols instead of
|
||||
// external ones. Also, make sure that the bizare name is used from
|
||||
// JavaScript code before using it from C++ code.
|
||||
Local<Value> value =
|
||||
CompileRun("var o = { externalSymbol722: 42 }; o.externalSymbol722");
|
||||
CHECK_EQ(42, value->Int32Value());
|
||||
value = CompileRun("obj.x");
|
||||
templ->SetAccessor(v8_str("externalSymbol722"),
|
||||
ExternalSymbolGetter,
|
||||
ExternalSymbolSetter);
|
||||
context->Global()->Set(v8_str("obj"), templ->NewInstance());
|
||||
value = CompileRun("obj.externalSymbol722");
|
||||
CHECK_EQ(true, value->BooleanValue());
|
||||
value = CompileRun("obj.x = 42");
|
||||
value = CompileRun("obj.externalSymbol722 = 42");
|
||||
v8::V8::SetExternalSymbolCallback(NULL);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user