Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit 1fc2c7a

Browse files
committed
[IMP] Memory: Improve perf but user can not use Object.defineProperty
1 parent 9638b84 commit 1fc2c7a

File tree

3 files changed

+4
-22
lines changed

3 files changed

+4
-22
lines changed

packages/core/src/Memory/VersionableArray.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ const proxyArrayHandler = {
4545
}
4646
const params = array[memoryProxyPramsKey];
4747
if (!params.memory) {
48-
return proxyObjectHandler.get(array, prop, proxy);
48+
return array[prop];
4949
}
5050
switch (prop) {
5151
case 'indexOf':
@@ -69,7 +69,7 @@ const proxyArrayHandler = {
6969
case 'filter':
7070
return filter.bind(proxy, params);
7171
default:
72-
return proxyObjectHandler.get(array, prop, proxy);
72+
return array[prop];
7373
}
7474
},
7575
set(

packages/core/src/Memory/VersionableObject.ts

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -71,24 +71,6 @@ export interface ProxyObjectHandler {
7171
}
7272

7373
export const proxyObjectHandler = {
74-
get(obj: object, prop: keyType, proxy: object): MemoryAllowedType {
75-
if (prop === memoryProxyPramsKey || prop === 'toString' || prop === 'constructor') {
76-
return obj[prop];
77-
}
78-
79-
const desc = Object.getOwnPropertyDescriptor(obj, prop);
80-
if (desc?.get) {
81-
return desc.get.call(proxy);
82-
}
83-
84-
const params = obj[memoryProxyPramsKey];
85-
const protoMethod = params.proto.getters[prop as string];
86-
if (protoMethod) {
87-
return protoMethod.call(proxy);
88-
}
89-
90-
return obj[prop];
91-
},
9274
set(obj: object, prop: keyType, value: MemoryAllowedType, proxy: object): boolean {
9375
// Object.assign might try to set the value of the paramsKey. We
9476
// obviously don't want that. Let it think it succeeded (returning false

packages/core/src/Memory/test/memory.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { VersionableSet } from '../VersionableSet';
77
import { makeVersionable, markNotVersionable, proxifyVersionable } from '../Versionable';
88
import { memoryProxyPramsKey } from '../const';
99

10-
describe('core', () => {
10+
describe.only('core', () => {
1111
describe('state', () => {
1212
describe('memory', () => {
1313
describe('throw', () => {
@@ -723,7 +723,7 @@ describe('core', () => {
723723
obj = new CustomCustom();
724724
expect(obj.getConstructor()).to.equal('CustomCustom');
725725
});
726-
it('array getter should keep proxy for "this" (use defineProperty)', () => {
726+
it.skip('array getter should keep proxy for "this" (use defineProperty)', () => {
727727
// eslint-disable-next-line @typescript-eslint/no-explicit-any
728728
const obj = new VersionableArray() as any;
729729
let test = 0;

0 commit comments

Comments
 (0)