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

Unified Diff: src/apinatives.js

Issue 895053002: Move the contents of api-natives.js to c++ (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 10 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/api-natives.cc ('k') | src/bootstrapper.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/apinatives.js
diff --git a/src/apinatives.js b/src/apinatives.js
deleted file mode 100644
index 3e38d100358041fe50536bf4523592ad311fe430..0000000000000000000000000000000000000000
--- a/src/apinatives.js
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2006-2008 the V8 project authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-"use strict";
-
-// This file contains infrastructure used by the API. See
-// v8natives.js for an explanation of these files are processed and
-// loaded.
-
-
-function CreateDate(time) {
- var date = new $Date();
- date.setTime(time);
- return date;
-}
-
-
-var kApiFunctionCache = new InternalArray();
-var functionCache = kApiFunctionCache;
-
-
-function Instantiate(data, name) {
- if (!%IsTemplate(data)) return data;
- var tag = %GetTemplateField(data, kApiTagOffset);
- switch (tag) {
- case kFunctionTag:
- return InstantiateFunction(data, name);
- case kNewObjectTag:
- var Constructor = %GetTemplateField(data, kApiConstructorOffset);
- // Note: Do not directly use a function template as a condition, our
- // internal ToBoolean doesn't handle that!
- var result;
- if (typeof Constructor === 'undefined') {
- result = {};
- ConfigureTemplateInstance(result, data);
- } else {
- // ConfigureTemplateInstance is implicitly called before calling the API
- // constructor in HandleApiCall.
- result = new (Instantiate(Constructor))();
- result = %ToFastProperties(result);
- }
- return result;
- default:
- throw 'Unknown API tag <' + tag + '>';
- }
-}
-
-
-function InstantiateFunction(data, name) {
- // We need a reference to kApiFunctionCache in the stack frame
- // if we need to bail out from a stack overflow.
- var cache = kApiFunctionCache;
- var serialNumber = %GetTemplateField(data, kApiSerialNumberOffset);
- var isFunctionCached =
- (serialNumber in cache) && (cache[serialNumber] != kUninitialized);
- if (!isFunctionCached) {
- try {
- var flags = %GetTemplateField(data, kApiFlagOffset);
- var prototype;
- if (!(flags & (1 << kRemovePrototypeBit))) {
- var template = %GetTemplateField(data, kApiPrototypeTemplateOffset);
- prototype = typeof template === 'undefined'
- ? {} : Instantiate(template);
-
- var parent = %GetTemplateField(data, kApiParentTemplateOffset);
- // Note: Do not directly use a function template as a condition, our
- // internal ToBoolean doesn't handle that!
- if (typeof parent !== 'undefined') {
- var parent_fun = Instantiate(parent);
- %InternalSetPrototype(prototype, parent_fun.prototype);
- }
- }
- var fun = %CreateApiFunction(data, prototype);
- if (IS_STRING(name)) %FunctionSetName(fun, name);
- var doNotCache = flags & (1 << kDoNotCacheBit);
- if (!doNotCache) cache[serialNumber] = fun;
- ConfigureTemplateInstance(fun, data);
- if (doNotCache) return fun;
- } catch (e) {
- cache[serialNumber] = kUninitialized;
- throw e;
- }
- }
- return cache[serialNumber];
-}
-
-
-function ConfigureTemplateInstance(obj, data) {
- var properties = %GetTemplateField(data, kApiPropertyListOffset);
- if (!properties) return;
- // Disable access checks while instantiating the object.
- var requires_access_checks = %DisableAccessChecks(obj);
- try {
- for (var i = 1; i < properties[0];) {
- var length = properties[i];
- if (length == 3) {
- var name = properties[i + 1];
- var prop_data = properties[i + 2];
- var attributes = properties[i + 3];
- var value = Instantiate(prop_data, name);
- %AddPropertyForTemplate(obj, name, value, attributes);
- } else if (length == 4 || length == 5) {
- // TODO(verwaest): The 5th value used to be access_control. Remove once
- // the bindings are updated.
- var name = properties[i + 1];
- var getter = properties[i + 2];
- var setter = properties[i + 3];
- var attribute = properties[i + 4];
- %DefineApiAccessorProperty(obj, name, getter, setter, attribute);
- } else {
- throw "Bad properties array";
- }
- i += length + 1;
- }
- } finally {
- if (requires_access_checks) %EnableAccessChecks(obj);
- }
-}
« no previous file with comments | « src/api-natives.cc ('k') | src/bootstrapper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698