Skip to content

Commit a96ec5d

Browse files
committed
Accelerated a conversion of script types to host types
1 parent a4537d1 commit a96ec5d

File tree

4 files changed

+14
-18
lines changed

4 files changed

+14
-18
lines changed

src/MsieJavaScriptEngine/JsRt/Edge/EdgeTypeMapper.cs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,6 @@ public override EdgeJsValue MapToScriptType(object value)
123123
public override object MapToHostType(EdgeJsValue value)
124124
{
125125
JsValueType valueType = value.ValueType;
126-
EdgeJsValue processedValue;
127126
object result;
128127

129128
switch (valueType)
@@ -135,16 +134,13 @@ public override object MapToHostType(EdgeJsValue value)
135134
result = Undefined.Value;
136135
break;
137136
case JsValueType.Boolean:
138-
processedValue = value.ConvertToBoolean();
139-
result = processedValue.ToBoolean();
137+
result = value.ToBoolean();
140138
break;
141139
case JsValueType.Number:
142-
processedValue = value.ConvertToNumber();
143-
result = NumericHelpers.CastDoubleValueToCorrectType(processedValue.ToDouble());
140+
result = NumericHelpers.CastDoubleValueToCorrectType(value.ToDouble());
144141
break;
145142
case JsValueType.String:
146-
processedValue = value.ConvertToString();
147-
result = processedValue.ToString();
143+
result = value.ToString();
148144
break;
149145
case JsValueType.Object:
150146
case JsValueType.Function:
@@ -154,7 +150,8 @@ public override object MapToHostType(EdgeJsValue value)
154150
result = value.HasExternalData ?
155151
GCHandle.FromIntPtr(value.ExternalData).Target : value.ConvertToObject();
156152
#else
157-
processedValue = value.ConvertToObject();
153+
EdgeJsValue processedValue = valueType != JsValueType.Object ?
154+
value.ConvertToObject() : value;
158155
object obj = processedValue.ToObject();
159156
var hostObj = obj as HostObject;
160157
result = hostObj != null ? hostObj.Target : obj;

src/MsieJavaScriptEngine/JsRt/Ie/IeTypeMapper.cs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,6 @@ public override IeJsValue MapToScriptType(object value)
120120
public override object MapToHostType(IeJsValue value)
121121
{
122122
JsValueType valueType = value.ValueType;
123-
IeJsValue processedValue;
124123
object result;
125124

126125
switch (valueType)
@@ -132,16 +131,13 @@ public override object MapToHostType(IeJsValue value)
132131
result = Undefined.Value;
133132
break;
134133
case JsValueType.Boolean:
135-
processedValue = value.ConvertToBoolean();
136-
result = processedValue.ToBoolean();
134+
result = value.ToBoolean();
137135
break;
138136
case JsValueType.Number:
139-
processedValue = value.ConvertToNumber();
140-
result = NumericHelpers.CastDoubleValueToCorrectType(processedValue.ToDouble());
137+
result = NumericHelpers.CastDoubleValueToCorrectType(value.ToDouble());
141138
break;
142139
case JsValueType.String:
143-
processedValue = value.ConvertToString();
144-
result = processedValue.ToString();
140+
result = value.ToString();
145141
break;
146142
case JsValueType.Object:
147143
case JsValueType.Function:
@@ -151,7 +147,8 @@ public override object MapToHostType(IeJsValue value)
151147
result = value.HasExternalData ?
152148
GCHandle.FromIntPtr(value.ExternalData).Target : value.ConvertToObject();
153149
#else
154-
processedValue = value.ConvertToObject();
150+
IeJsValue processedValue = valueType != JsValueType.Object ?
151+
value.ConvertToObject() : value;
155152
object obj = processedValue.ToObject();
156153
var hostObj = obj as HostObject;
157154
result = hostObj != null ? hostObj.Target : obj;

src/MsieJavaScriptEngine/MsieJavaScriptEngine.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
<PackageTags>JavaScript;ECMAScript;MSIE;IE;Edge;Chakra</PackageTags>
2424
<PackageReleaseNotes>1. Fixed a error, that occurred in the `Classic` mode during calling an embedded delegate, which does not return a result;
2525
2. Fixed a error, that occurred during setting a value to field of embedded type;
26-
3. Improved a performance of the embedding of objects and types.</PackageReleaseNotes>
26+
3. Improved a performance of the embedding of objects and types;
27+
4. Accelerated a conversion of script types to host types.</PackageReleaseNotes>
2728
<NeutralLanguage>en-US</NeutralLanguage>
2829
<PackageOutputPath>../../nuget</PackageOutputPath>
2930
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>

src/MsieJavaScriptEngine/readme.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@
2525
delegate, which does not return a result;
2626
2. Fixed a error, that occurred during setting a value to field of embedded
2727
type;
28-
3. Improved a performance of the embedding of objects and types.
28+
3. Improved a performance of the embedding of objects and types;
29+
4. Accelerated a conversion of script types to host types.
2930

3031
============
3132
PROJECT SITE

0 commit comments

Comments
 (0)