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

Side by Side Diff: src/v8natives.js

Issue 6698027: Reapply 7143 after fixing issue 1250 (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 9 years, 9 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | test/mjsunit/accessors-on-global-object.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 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 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 244
245 245
246 // Extensions for providing property getters and setters. 246 // Extensions for providing property getters and setters.
247 function ObjectDefineGetter(name, fun) { 247 function ObjectDefineGetter(name, fun) {
248 if (this == null && !IS_UNDETECTABLE(this)) { 248 if (this == null && !IS_UNDETECTABLE(this)) {
249 throw new $TypeError('Object.prototype.__defineGetter__: this is Null'); 249 throw new $TypeError('Object.prototype.__defineGetter__: this is Null');
250 } 250 }
251 if (!IS_FUNCTION(fun)) { 251 if (!IS_FUNCTION(fun)) {
252 throw new $TypeError('Object.prototype.__defineGetter__: Expecting function' ); 252 throw new $TypeError('Object.prototype.__defineGetter__: Expecting function' );
253 } 253 }
254 return %DefineAccessor(ToObject(this), ToString(name), GETTER, fun); 254 var desc = new PropertyDescriptor();
255 desc.setGet(fun);
256 desc.setEnumerable(true);
257 desc.setConfigurable(true);
258 DefineOwnProperty(ToObject(this), ToString(name), desc, true);
255 } 259 }
256 260
257 261
258 function ObjectLookupGetter(name) { 262 function ObjectLookupGetter(name) {
259 if (this == null && !IS_UNDETECTABLE(this)) { 263 if (this == null && !IS_UNDETECTABLE(this)) {
260 throw new $TypeError('Object.prototype.__lookupGetter__: this is Null'); 264 throw new $TypeError('Object.prototype.__lookupGetter__: this is Null');
261 } 265 }
262 return %LookupAccessor(ToObject(this), ToString(name), GETTER); 266 return %LookupAccessor(ToObject(this), ToString(name), GETTER);
263 } 267 }
264 268
265 269
266 function ObjectDefineSetter(name, fun) { 270 function ObjectDefineSetter(name, fun) {
267 if (this == null && !IS_UNDETECTABLE(this)) { 271 if (this == null && !IS_UNDETECTABLE(this)) {
268 throw new $TypeError('Object.prototype.__defineSetter__: this is Null'); 272 throw new $TypeError('Object.prototype.__defineSetter__: this is Null');
269 } 273 }
270 if (!IS_FUNCTION(fun)) { 274 if (!IS_FUNCTION(fun)) {
271 throw new $TypeError( 275 throw new $TypeError(
272 'Object.prototype.__defineSetter__: Expecting function'); 276 'Object.prototype.__defineSetter__: Expecting function');
273 } 277 }
274 return %DefineAccessor(ToObject(this), ToString(name), SETTER, fun); 278 var desc = new PropertyDescriptor();
279 desc.setSet(fun);
280 desc.setEnumerable(true);
281 desc.setConfigurable(true);
282 DefineOwnProperty(ToObject(this), ToString(name), desc, true);
275 } 283 }
276 284
277 285
278 function ObjectLookupSetter(name) { 286 function ObjectLookupSetter(name) {
279 if (this == null && !IS_UNDETECTABLE(this)) { 287 if (this == null && !IS_UNDETECTABLE(this)) {
280 throw new $TypeError('Object.prototype.__lookupSetter__: this is Null'); 288 throw new $TypeError('Object.prototype.__lookupSetter__: this is Null');
281 } 289 }
282 return %LookupAccessor(ToObject(this), ToString(name), SETTER); 290 return %LookupAccessor(ToObject(this), ToString(name), SETTER);
283 } 291 }
284 292
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 this.enumerable_ = false; 395 this.enumerable_ = false;
388 this.hasEnumerable_ = false; 396 this.hasEnumerable_ = false;
389 this.configurable_ = false; 397 this.configurable_ = false;
390 this.hasConfigurable_ = false; 398 this.hasConfigurable_ = false;
391 this.get_ = void 0; 399 this.get_ = void 0;
392 this.hasGetter_ = false; 400 this.hasGetter_ = false;
393 this.set_ = void 0; 401 this.set_ = void 0;
394 this.hasSetter_ = false; 402 this.hasSetter_ = false;
395 } 403 }
396 404
405 PropertyDescriptor.prototype.__proto__ = null;
406 PropertyDescriptor.prototype.toString = function() {
407 return "[object PropertyDescriptor]";
408 };
397 409
398 PropertyDescriptor.prototype.setValue = function(value) { 410 PropertyDescriptor.prototype.setValue = function(value) {
399 this.value_ = value; 411 this.value_ = value;
400 this.hasValue_ = true; 412 this.hasValue_ = true;
401 } 413 }
402 414
403 415
404 PropertyDescriptor.prototype.getValue = function() { 416 PropertyDescriptor.prototype.getValue = function() {
405 return this.value_; 417 return this.value_;
406 } 418 }
(...skipping 836 matching lines...) Expand 10 before | Expand all | Expand 10 after
1243 // ---------------------------------------------------------------------------- 1255 // ----------------------------------------------------------------------------
1244 1256
1245 function SetupFunction() { 1257 function SetupFunction() {
1246 InstallFunctions($Function.prototype, DONT_ENUM, $Array( 1258 InstallFunctions($Function.prototype, DONT_ENUM, $Array(
1247 "bind", FunctionBind, 1259 "bind", FunctionBind,
1248 "toString", FunctionToString 1260 "toString", FunctionToString
1249 )); 1261 ));
1250 } 1262 }
1251 1263
1252 SetupFunction(); 1264 SetupFunction();
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/accessors-on-global-object.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698