Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1734)

Unified Diff: test/cctest/test-api.cc

Issue 93863006: Revert "Load the global proxy from the context of the target function." (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/x64/stub-cache-x64.cc ('k') | test/mjsunit/contextual-calls.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/cctest/test-api.cc
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
index 372c70d208c175ad3aeaf376b2cad221a857f313..eeb786518e8d6ca13cb5b915505017c925d98573 100644
--- a/test/cctest/test-api.cc
+++ b/test/cctest/test-api.cc
@@ -8704,23 +8704,12 @@ TEST(DetachGlobal) {
}
-void GetThisX(const v8::FunctionCallbackInfo<v8::Value>& info) {
- info.GetReturnValue().Set(
- info.GetIsolate()->GetCurrentContext()->Global()->Get(v8_str("x")));
-}
-
-
TEST(DetachedAccesses) {
LocalContext env1;
v8::HandleScope scope(env1->GetIsolate());
// Create second environment.
- Local<ObjectTemplate> inner_global_template =
- FunctionTemplate::New(env1->GetIsolate())->InstanceTemplate();
- inner_global_template ->SetAccessorProperty(
- v8_str("this_x"), FunctionTemplate::New(env1->GetIsolate(), GetThisX));
- v8::Local<Context> env2 =
- Context::New(env1->GetIsolate(), NULL, inner_global_template);
+ v8::Handle<Context> env2 = Context::New(env1->GetIsolate());
Local<Value> foo = v8_str("foo");
@@ -8728,21 +8717,15 @@ TEST(DetachedAccesses) {
env1->SetSecurityToken(foo);
env2->SetSecurityToken(foo);
- env1->Global()->Set(v8_str("x"), v8_str("env1_x"));
-
{
v8::Context::Scope scope(env2);
- env2->Global()->Set(v8_str("x"), v8_str("env2_x"));
CompileRun(
- "function bound_x() { return x; }"
- "function get_x() { return this.x; }"
- "function get_x_w() { return (function() {return this.x;})(); }");
- env1->Global()->Set(v8_str("bound_x"), CompileRun("bound_x"));
+ "var x = 'x';"
+ "function get_x() { return this.x; }"
+ "function get_x_w() { return get_x(); }"
+ "");
env1->Global()->Set(v8_str("get_x"), CompileRun("get_x"));
env1->Global()->Set(v8_str("get_x_w"), CompileRun("get_x_w"));
- env1->Global()->Set(
- v8_str("this_x"),
- CompileRun("Object.getOwnPropertyDescriptor(this, 'this_x').get"));
}
Local<Object> env2_global = env2->Global();
@@ -8750,14 +8733,10 @@ TEST(DetachedAccesses) {
env2->DetachGlobal();
Local<Value> result;
- result = CompileRun("bound_x()");
- CHECK_EQ(v8_str("env2_x"), result);
result = CompileRun("get_x()");
CHECK(result->IsUndefined());
result = CompileRun("get_x_w()");
CHECK(result->IsUndefined());
- result = CompileRun("this_x()");
- CHECK_EQ(v8_str("env2_x"), result);
// Reattach env2's proxy
env2 = Context::New(env1->GetIsolate(),
@@ -8767,62 +8746,13 @@ TEST(DetachedAccesses) {
env2->SetSecurityToken(foo);
{
v8::Context::Scope scope(env2);
- env2->Global()->Set(v8_str("x"), v8_str("env3_x"));
- env2->Global()->Set(v8_str("env1"), env1->Global());
- result = CompileRun(
- "results = [];"
- "for (var i = 0; i < 4; i++ ) {"
- " results.push(env1.bound_x());"
- " results.push(env1.get_x());"
- " results.push(env1.get_x_w());"
- " results.push(env1.this_x());"
- "}"
- "results");
- Local<v8::Array> results = Local<v8::Array>::Cast(result);
- CHECK_EQ(16, results->Length());
- for (int i = 0; i < 16; i += 4) {
- CHECK_EQ(v8_str("env2_x"), results->Get(i + 0));
- CHECK_EQ(v8_str("env1_x"), results->Get(i + 1));
- CHECK_EQ(v8_str("env3_x"), results->Get(i + 2));
- CHECK_EQ(v8_str("env2_x"), results->Get(i + 3));
- }
+ CompileRun("var x = 'x2';");
}
- result = CompileRun(
- "results = [];"
- "for (var i = 0; i < 4; i++ ) {"
- " results.push(bound_x());"
- " results.push(get_x());"
- " results.push(get_x_w());"
- " results.push(this_x());"
- "}"
- "results");
- Local<v8::Array> results = Local<v8::Array>::Cast(result);
- CHECK_EQ(16, results->Length());
- for (int i = 0; i < 16; i += 4) {
- CHECK_EQ(v8_str("env2_x"), results->Get(i + 0));
- CHECK_EQ(v8_str("env3_x"), results->Get(i + 1));
- CHECK_EQ(v8_str("env3_x"), results->Get(i + 2));
- CHECK_EQ(v8_str("env2_x"), results->Get(i + 3));
- }
-
- result = CompileRun(
- "results = [];"
- "for (var i = 0; i < 4; i++ ) {"
- " results.push(this.bound_x());"
- " results.push(this.get_x());"
- " results.push(this.get_x_w());"
- " results.push(this.this_x());"
- "}"
- "results");
- results = Local<v8::Array>::Cast(result);
- CHECK_EQ(16, results->Length());
- for (int i = 0; i < 16; i += 4) {
- CHECK_EQ(v8_str("env2_x"), results->Get(i + 0));
- CHECK_EQ(v8_str("env1_x"), results->Get(i + 1));
- CHECK_EQ(v8_str("env3_x"), results->Get(i + 2));
- CHECK_EQ(v8_str("env2_x"), results->Get(i + 3));
- }
+ result = CompileRun("get_x()");
+ CHECK(result->IsUndefined());
+ result = CompileRun("get_x_w()");
+ CHECK_EQ(v8_str("x2"), result);
}
@@ -20180,10 +20110,11 @@ THREADED_TEST(ForeignFunctionReceiver) {
CHECK(i->Equals(CompileRun("'abcbd'.replace(/b/g,func)[1]")));
CHECK(i->Equals(CompileRun("'abcbd'.replace(/b/g,func)[3]")));
+ // TODO(1547): Make the following also return "i".
// Calling with environment record as base.
- TestReceiver(i, foreign_context->Global(), "func()");
+ TestReceiver(o, context->Global(), "func()");
// Calling with no base.
- TestReceiver(i, foreign_context->Global(), "(1,func)()");
+ TestReceiver(o, context->Global(), "(1,func)()");
}
« no previous file with comments | « src/x64/stub-cache-x64.cc ('k') | test/mjsunit/contextual-calls.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698